【发布时间】:2018-09-14 10:22:45
【问题描述】:
我登录到一个私人网站,然后等待链接文本出现,然后使用 browser.get() 打开链接。下面的代码几乎每次在等待链接文本“OTD”出现时都会抛出超时异常。奇怪的是,它在多次尝试中一次有效。更奇怪的是,如果我使用睡眠计时器而不是等待预期条件,它可以工作,但这不是我想要使用的。
这里是html:
<a target="_blank" href="/privateurl">OTD</a>
这是使用 chromedriver 的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import webbrowser
chrome_options = webdriver.ChromeOptions()
prefs = {'download.default_directory' : 'E:\\folder'}
chrome_options.add_experimental_option('prefs', prefs)
browser = webdriver.Chrome(chrome_options=chrome_options)
#browser.get('private url login page')
#enter login information and submit
wait = WebDriverWait(browser, 10)
wait.until(
EC.presence_of_element_located((By.LINK_TEXT, "OTD"))
)
browser.get('private url')
我有相同的代码,但对于 Firefox 驱动程序,它每次都能完美运行。我只需要改用 Chrome 浏览器。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import webbrowser
profile = webdriver.FirefoxProfile()
profile.set_preference("browser.download.folderList", 2)
profile.set_preference("browser.download.dir", 'E:\\folder')
profile.set_preference("browser.download.useDownloadDir", True)
browser=webdriver.Firefox(profile)
#browser.get('private url login page')
#enter login information and submit
wait = WebDriverWait(browser, 10)
wait.until(
EC.presence_of_element_located((By.LINK_TEXT, "OTD"))
)
browser.get('private url')
我在使用 chromedriver 的代码中做错了什么,导致它抛出超时异常?
【问题讨论】:
-
如果您在当前版本的 Chrome
65上运行,如果您没有运行 至少 chromedriver version2.36,请更新您的 chromedriver 并执行您的测试再次。从HERE 更新。我已经看到很多关于新的稳定版本的 chrome 和旧版本的 chromedriver 的问题。 -
那是我用的那个,但是我通过你提供的链接再次下载它并执行了测试,但仍然有同样的问题。我正在使用当前版本的 Chrome 65。
-
我编辑了帖子说替换等待预期条件的睡眠计时器有效,但这不是我想要使用的。
标签: python google-chrome selenium firefox