我正在使用Python和Selenium模块编写一个bot,当我用bot打开一个网页时,由于该网页包含的外部源代码比dom多,所以要加载所有网页需要很多时间。我使用显式和隐式等待来消除这个问题,因为我只想加载一个特定的元素,而不是所有的网页,它不起作用。问题是如果我运行以下语句:
driver = webdriver.Firefox()
driver.get('somewebpage')
elm = WebDriverWait(driver, 5).until(ExpectedConditions.presence_of_element_located((By.ID, 'someelementID'))
elm.click()
它不起作用,因为Selenium等待driver.get()完全检索网页,然后继续。现在我要编写一个设置driver.get()超时的代码,比如:
driver.get('somewebpage').timeout(5)
其中driver.get()在5秒后停止加载页面,程序流继续,无论driver.get()是否已完全加载网页。
顺便说一句,我搜了搜上面说的那个特征,发现了:
Selenium WebDriver go to page without waiting for page load
但问题是,上面链接中的答案并没有说明与Python等价的代码。
我该如何实现我正在寻找的未来?
关于这个,here is an example有很多问题。下面是一个示例,它等待所有jquery ajax调用完成或5秒超时。
python
当前问题中提到的问题的等效代码(Selenium WebDriver go to page without waiting for page load):以及:
这是一个非常乏味的问题。我刚做了以下几点,问题就解决了:
它使用Firefox驱动程序(以及Chrome驱动程序)对我有效。
相关问题 更多 >
编程相关推荐