Ich versuche, ein Selenium Webdriver-Skript in Python auszuführen, um einige grundlegende Aufgaben zu erledigen. Ich kann den Roboter dazu bringen, perfekt zu funktionieren, wenn ich ihn durch die Selenium IDE Schnittstelle laufe (zB wenn ich einfach die GUI dazu bringe, meine Aktionen zu wiederholen). Wenn ich jedoch den Code als Python-Skript exportiere und versuche, ihn über die Befehlszeile auszuführen, öffnet sich der Firefox-Browser, kann aber niemals auf die Start-URL zugreifen (ein Fehler wird an die Befehlszeile zurückgegeben und das Programm stoppt). Das passiert mir unabhängig davon, auf welcher Webseite ich versuche zuzugreifen.Running Selenium Webdriver mit einem Proxy in Python
Ich habe hier einen sehr einfachen Code zu Demonstrationszwecken eingefügt. Ich glaube nicht, dass ich den Proxy-Abschnitt des Codes korrekt eingefügt habe, da der zurückgegebene Fehler scheinbar vom Proxy generiert wird.
Jede Hilfe würde sehr geschätzt werden.
Der folgende Code soll einfach www.google.ie öffnen und nach dem Wort "selen" suchen. Für mich öffnet es einen leeren Firefox Browser und stoppt.
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 = "http://149.215.113.110:70"
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 = "https://www.google.ie/"
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()
Diese Antwort war für mich gut . Falls jemand dies mit Edge versucht, hat 'webdriver.DesiredCapabilities.EDGE ['proxy']' keine Auswirkung, da Microsoft Edge momentan keine Einstellung zum Konfigurieren eines Proxyservers hat (um Edge mit einem Proxy zu verwenden, Sie müssen den Proxy unter den Windows-Netzwerkverbindungseinstellungen konfigurieren). –
Das vollständige Dokument finden Sie unter: https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities#proxy-json-object – LeckieNi