Ich versuche, ein Selenium Webdriver-Skript in Python auszuführen, um einige grundlegende Aufgaben auszuführen. Ich kann den Roboter zum Funktionieren bringen, wenn er über die Selenium IDE-Schnittstelle ausgeführt wird (dh wenn einfach die GUI meine Aktionen wiederholt). Wenn ich den Code jedoch als Python-Skript exportiere und versuche, ihn über die Befehlszeile auszuführen, wird der Firefox-Browser geöffnet, kann jedoch nie auf die Start-URL zugreifen (ein Fehler wird an die Befehlszeile zurückgegeben und das Programm stoppt). Dies passiert mir unabhängig davon, auf welche Website usw. ich zugreifen möchte.
Ich habe hier zu Demonstrationszwecken einen sehr einfachen Code eingefügt. Ich glaube nicht, dass ich den Proxy-Abschnitt des Codes korrekt eingefügt habe, da der zurückgegebene Fehler vom Proxy generiert zu werden scheint.
Jede Hilfe wäre sehr dankbar.
Der folgende Code soll lediglich 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()