Sto tentando di eseguire uno script Selenium Webdriver in Python per eseguire alcune attività di base. Riesco a far funzionare il robot perfettamente quando lo si esegue attraverso l'interfaccia IDE Selenium (ovvero: quando si ottiene semplicemente la GUI per ripetere le mie azioni). Tuttavia, quando esporto il codice come script Python e provo ad eseguirlo dalla riga di comando, il browser Firefox si aprirà ma non potrà mai accedere all'URL iniziale (viene restituito un errore alla riga di comando e il programma si ferma). Questo mi sta accadendo a prescindere dal sito Web che sto cercando di accedere.In esecuzione Selenium Webdriver con un proxy in Python
Ho incluso un codice molto semplice qui a scopo dimostrativo. Non penso di aver incluso correttamente la sezione proxy del codice poiché l'errore che viene restituito sembra essere generato dal proxy.
Qualsiasi aiuto sarebbe molto apprezzato.
Il seguente codice ha il solo scopo di aprire www.google.ie e cercare la parola "selenio". Per me apre un browser Firefox vuoto e si ferma.
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()
Questa risposta ha funzionato bene per me . Nel caso in cui qualcun altro stia tentando di farlo con Edge, 'webdriver.DesiredCapabilities.EDGE ['proxy']' non ha alcun effetto perché attualmente Microsoft Edge non ha un'impostazione per configurare un server proxy (per utilizzare Edge con un proxy, è necessario configurare il proxy nelle impostazioni di connessione di rete di Windows). –
Per il documento dettagliato completo, consultare: https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities#proxy-json-object – LeckieNi