J'essaie d'exécuter un Selenium Webdriver script en Python pour effectuer quelques tâches de base. J'arrive à faire fonctionner le robot parfaitement lorsque je l'exécute via l'interface Selenium IDE (c'est-à-dire en faisant simplement répéter mes actions par l'interface graphique). Cependant, lorsque j'exporte le code en tant que Python script et que j'essaie de l'exécuter à partir de la ligne de commande, le navigateur Firefox s'ouvre mais ne peut jamais accéder à l'URL de départ (une erreur est renvoyée à la ligne de commande et le programme s'arrête). Cela se produit quel que soit le site Web auquel j'essaie d'accéder.
J'ai inclus un code très basique ici à des fins de démonstration. Je ne pense pas avoir inclus la section proxy du code correctement, car l'erreur renvoyée semble être générée par le proxy.
Toute aide serait extrêmement appréciée.
Le code ci-dessous est simplement destiné à ouvrir www.google.ie et à rechercher le mot "selenium". Pour moi, il ouvre un navigateur Firefox vide et s'arrête.
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()