Python,Firefox和Selenium 3:从下拉列表中选择值不适用于Firefox 45

时间:2017-02-23 18:40:35

标签: python selenium firefox geckodriver

我正在尝试打开网站并从下拉列表中选择一个值。不幸的是,下面的内容不起作用,经过广泛的研究,我即将放弃: Python 3.6.0 硒3.0.2 Firefox 45.7.0(由于公司规定,无法更新)

我的代码是:

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,我该怎么办?我是否需要降级Selenium或geckodriver?

1 个答案:

答案 0 :(得分:1)

据我所知,Geckodriver与Firefox 45不完全兼容。所以最安全的选择是将Selenium降级到2.53.1。

从评论中回答你的问题 这有点复杂。 Selenium 3需要Geckodriver与Firefox进行通信,而Firefox只与Firefox 47或更高版本完全兼容(遗憾的是我没有找到完整的兼容性列表)。 如果您想(或有)使用Firefox 45,则无法使用需要Geckodriver的Selenium版本来使用Firefox。
所以FF45 ==没有Geckodriver ==任何低于3的Selenium版本。

This post可能会为您提供更多信息。