#coding=utf-8 from selenium.webdriver import Remote dr = Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'platform':'ANY', 'browserName':'firefox', 'version':'', 'javascriptEnabled':True } ) dr.get("https://www.baidu.com") dr.find_element_by_id("kw").send_keys("grid") dr.find_element_by_id("su").click() print("ok") dr.quit()
這一段代碼一直報錯,也不知道原因,網上查看各種方法驗證之后都不行,改來改去,最后我也不知道那種方法改好的,只能把所有遇到問題記錄下來。報錯當時也沒有截圖,只能回憶列一下大概的報錯信息:
1、第一次排查,發現瀏覽器的安裝路徑沒有放到環境變量中,更正后,報錯
2、有網友的解決辦法是:打開ie-設置-internet選項-局域網lan設置-代理服務器。這一項不勾選。這個位置我的ie本來也沒勾選。所以此解決方法不行
3、錯誤提示:The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/ge... The latest version can be downloaded fromhttps://github.com/mozilla/ge...
下載之后將geckodriver解壓放在安裝目錄,加入path環境變量后運行依然報錯
4、error [10061]的報錯。忘記運行selenium server了
5、運行時瀏覽器被重復打開多次報錯,
解決方法是:代碼中添加‘marionette’:False 運行成功。
以上就是我遇到的問題,具體的報錯信息記不清楚了,大概記一下,也算是做個教訓。
以后遇到報錯,直接截圖,問題解決后整理歸檔。
郁悶的是:問題解決了,我卻不知道到底是那種方法解決的。
總結:
python+selenium 使用Remote啟動瀏覽器:
1、先啟動selenium server
2、更改代碼如下
#coding=utf-8 from selenium.webdriver import Remote dr = Remote(command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'platform':'ANY', 'browserName':'firefox', 'version':'', 'javascriptEnabled':True, 'marionette':False } ) dr.get("https://www.baidu.com") dr.find_element_by_id("kw").send_keys("grid") dr.find_element_by_id("su").click() print("ok") dr.quit()
‘marionette’:False marionette是python客戶端允許運行遠程控制基於gecko的瀏覽器或設備運行一個marionette服務器,包括桌面firefox和firefox os。該參數為firefox特用。
上述關於marionette解釋,參考於蟲師selenium2自動化測試的書,在p242