2017-02-23 38 views
0

我想打開一個網站並從下拉列表中選擇一個值。不幸的是,下面不工作,經過廣泛的研究,我打算放棄: 的Python 3.6.0 硒3.0.2 火狐45.7.0Python,Firefox和Selenium 3:從下拉列表中選擇值不適用於Firefox 45

我的代碼是(不能因公司章程更新):

from selenium import webdriver 
from selenium.webdriver.firefox.webdriver import FirefoxProfile 
from selenium.webdriver.support.ui import Select 

#set profile for firefox 
profile = FirefoxProfile("C:\\Users\\Rash\\Documents\\PythonScripts\\FirefoxProfileCopies\\u4gehg17.default.copy") 
profile.set_preference("browser.download.folderList", 2) 
profile.set_preference("browser.download.manager.showWhenStarting", False) 
profile.set_preference("browser.download.dir", "C:\\Users\\Rash\\Desktop\\TestDownloadFolderSelenium") #set directory for download 
profile.set_preference("browser.helperApps.neverAsk.saveToDisk", 'application/vnd.ms-excel') 

#start a browser session 
browser = webdriver.Firefox(profile) 

# open the ProCon page 
browser.get("http://reiseauskunft.bahn.de/bin/query.exe/dn?getstop=1&dbkanal_008=L01_S01_D001_KLR0011_konzernportal_LZ03") 

select1 = Select(browser.find_element_by_name("REQ0HafasChangeTime")) 
select1.select_by_visible_text("mindestens 30 Minuten") 

for row in select1.options: 
    print(row.text) 

奇怪的是,循環打印從正確的下拉菜單中所有的正確的價值觀,但select代碼不起作用的下拉菜單更改爲值「mindestens 30 Minuten」。同樣的問題也發生在不同的網站上。這可能是由於舊版本的Firefox的問題?

我在家用Firefox 51.0.1試過,它工作!它選擇了正確的值。所以我現在想知道,因爲我無法在工作中更新我的Firefox,我該怎麼辦?我需要降級硒還是geckodriver?

+0

據我所知Geckodriver不完全兼容Firefox 45.所以你最安全的選擇是將Selenium降級到2.53.1。 –

+0

我剛剛做了,這解決了我的問題。我只是想知道我是否理解正確:Selenium 2.53不使用Geckodriver,但是Selenium 3.x可以嗎?也請將此添加爲答案,以便我可以接受。謝謝!! – rashid

回答

1

據我所知Geckodriver不完全兼容Firefox 45.所以最安全的選擇是將Selenium降級到2.53.1。

從評論回答你的問題。
這有點複雜。 Selenium 3需要Geckodriver與Firefox進行通信,而Firefox又與Firefox 47或更高版本完全兼容(很遺憾,我沒有找到完整的兼容性列表)。
如果你想(或有)使用Firefox 45,你不能使用需要Geckodriver的Selenium版本來使用Firefox。
所以FF45 ==沒有Geckodriver ==任何Selenium版本低於3.

This post可能會給你更多的信息。

+0

該鏈接非常有幫助,謝謝。 – rashid

相關問題