Uruchamianie Selenium Webdriver z proxy w Pythonie
Próbuję uruchomić skrypt Selenium Webdriver w Pythonie, aby wykonać kilka podstawowych zadań. Mogę sprawić, by robot działał idealnie, gdy przepuszczę go przez interfejs Selenium IDE (tj. Gdy po prostu sprawię, że GUI powtórzy moje działania). Jednak gdy wyeksportuję kod jako skrypt Pythona i spróbuję wykonać go z wiersza poleceń, przeglądarka Firefox otworzy się, ale nigdy nie będzie w stanie uzyskać dostępu do początkowego adresu URL (błąd wraca do wiersza poleceń i program zatrzymuje się). Zdarza mi się to bez względu na witrynę itp. Próbuję uzyskać dostęp.
Dołączyłem tutaj bardzo prosty kod do celów demonstracyjnych. Wydaje mi się, że sekcja proxy nie została poprawnie dołączona, ponieważ zwrócony błąd wydaje się być generowany przez proxy.
Każda pomoc byłaby bardzo mile widziana.
Poniższy kod ma po prostu otworzyć stronę www.google.ie i wyszukać słowo „selen”. Dla mnie otwiera pustą przeglądarkę Firefox i zatrzymuje się.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
import unittest, time, re
from selenium.webdriver.common.proxy import *class Testrobot2(unittest.TestCase):
def setUp(self): myProxy = "[url=http://149.215.113.110:70"]http://149.215.113.110:70"[/url] proxy = Proxy({
'proxyType': ProxyType.MANUAL,
'httpProxy': myProxy,
'ftpProxy': myProxy,
'sslProxy': myProxy,
'noProxy':''}) self.driver = webdriver.Firefox(proxy=proxy)
self.driver.implicitly_wait(30)
self.base_url = "[url=https://www.google.ie/"]https://www.google.ie/"[/url]
self.verificationErrors = []
self.accept_next_alert = True def test_robot2(self):
driver = self.driver
driver.get(self.base_url + "/#gs_rn=17&gs_ri=psy-ab&suggest=p&cp=6&gs_id=ix&xhr=t&q=selenium&es_nrs=true&pf=p&output=search&sclient=psy-ab&oq=seleni&gs_l=&pbx=1&bav=on.2,or.r_qf.&bvm=bv.47883778,d.ZGU&fp=7c0d9024de9ac6ab&biw=592&bih=665")
driver.find_element_by_id("gbqfq").clear()
driver.find_element_by_id("gbqfq").send_keys("selenium") def is_element_present(self, how, what):
try: self.driver.find_element(by=how, value=what)
except NoSuchElementException, e: return False
return True def is_alert_present(self):
try: self.driver.switch_to_alert()
except NoAlertPresentException, e: return False
return True def close_alert_and_get_its_text(self):
try:
alert = self.driver.switch_to_alert()
alert_text = alert.text
if self.accept_next_alert:
alert.accept()
else:
alert.dismiss()
return alert_text
finally: self.accept_next_alert = True def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)if __name__ == "__main__":
unittest.main()
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
12 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Możesz przeczytać więcej na ten temat
tutaj
http://docs.seleniumhq.org/doc ... proxy
.
Anonimowy użytkownik
Potwierdzenie od:
Następnie zadzwoń pod swój kod:
Miałem problemy z tym kodem, ponieważ przekazywałem ciąg jako port #:
To jest bardzo ważne:
Musisz podać liczbę całkowitą zamiast ciągu, w przeciwnym razie Twój profil Firefoksa nie zostanie ustawiony na prawidłowy port, a połączenie proxy nie będzie działać.
Anonimowy użytkownik
Potwierdzenie od:
Następnie zadzwoń do ze swojego programu.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Ten program
przetestowany
na Windows 8 i Mac OSX. Jeśli używasz Mac OSX i nie zaktualizowałeś selenu, możesz napotkać . Jeśli tak, spróbuj ponownie po aktualizacji selenu
Anonimowy użytkownik
Potwierdzenie od:
Oto moje rozwiązanie na powyższe pytanie. Proste i słodkie
OR
Anonimowy użytkownik
Potwierdzenie od:
to pytanie
https://coderoad.ru/17988821/
albo nie działały dla mnie z Selenium 3.14 i Firefox 68.9 w Linuksie, albo są niepotrzebnie skomplikowane. Musiałem użyć konfiguracji WPAD, czasami za serwerem proxy (w sieci VPN), a czasami nie. Po lekkim przestudiowaniu kodu doszedłem do wniosku:
Inicjalizacja proxy ustawia proxyType na ProxyType.PAC (autokonfiguracja z adresu URL) jako efekt uboczny.
Działał również z autodetekcją przeglądarki Firefox przy użyciu:
Ale nie sądzę, żeby to zadziałało zarówno z wewnętrznymi adresami URL (bez proxy), jak iz zewnętrznym (przez proxy) sposobem WPAD. Podobne ustawienia proxy powinny działać również w przypadku konfiguracji ręcznej. Możliwe ustawienia proxy można zobaczyć w kodzie
tutaj
https://www.selenium.dev/selen ... .html
.
Zauważ, że bezpośrednie przekazanie obiektu proxy jako do sterownika nie działa - jest akceptowane, ale ignorowane (powinno być ostrzeżenie o wycofaniu, ale w moim przypadku myślę, że Behavior go połyka).
Anonimowy użytkownik
Potwierdzenie od:
zapisy konfiguracji
https://github.com/SeleniumHQ/ ... ities
Zostało usunięte. Maksymalny:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od: