Tôi đang cố gắng chạy tập lệnh Trình quản trị Web Selenium bằng Python để thực hiện một số tác vụ cơ bản. Tôi có thể làm cho robot hoạt động hoàn hảo khi chạy nó thông qua inten selen IDE (ví dụ: khi đơn giản nhận GUI để lặp lại hành động của tôi). Tuy nhiên khi tôi xuất mã dưới dạng tập lệnh Python và cố thực thi nó từ dòng lệnh, trình duyệt Firefox sẽ mở nhưng không bao giờ có thể truy cập URL bắt đầu (lỗi được trả về dòng lệnh và chương trình dừng). Điều này đang xảy ra cho tôi bất kể trang web nào tôi đang cố gắng truy cập.Chạy Trình quản trị Web Selenium bằng một proxy trong Python
Tôi đã bao gồm một mã rất cơ bản ở đây cho mục đích trình diễn. Tôi không nghĩ rằng tôi đã bao gồm phần proxy của mã chính xác vì lỗi được trả lại dường như được tạo bởi proxy.
Mọi trợ giúp sẽ được đánh giá cao.
Mã bên dưới chỉ đơn giản là để mở www.google.ie và tìm kiếm từ "selenium". Đối với tôi, nó sẽ mở một trình duyệt firefox trống và dừng lại.
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()
Câu trả lời này làm việc tốt cho tôi . Trong trường hợp bất kỳ ai khác đang cố gắng làm điều này với Edge, 'webdriver.DesiredCapabilities.EDGE ['proxy']' không có hiệu lực vì Microsoft Edge hiện không có cài đặt cấu hình máy chủ proxy (để sử dụng Edge với proxy, bạn phải định cấu hình proxy trong cài đặt kết nối mạng của Windows). –
Để xem tài liệu chi tiết đầy đủ, hãy xem: https://github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities#proxy-json-object – LeckieNi