当前位置: 首页 > 知识库问答 >
问题:

如何使Selenium WebDriver不等待整个页面加载

罗宪
2023-03-14

我正在使用Python 2.7与火狐的硒网络驱动程序,我有一个问题,我不能解决或在互联网上找到解决。我的任务是打开大约10k个网页(adsl路由器Web界面 - 通过IP地址)并上传新固件。我写了代码,但为了完成它,我必须学习如何使硒webdriver不要像永远一样等待页面加载,而是等待2分钟(这是新固件上传所需的时间),然后继续下一步。我以为我让它永远等待(等待路由器重新连接 - 速度慢得多,但我可以在没有帮助的情况下实现),但问题是当我点击上传按钮时,它需要2分钟上传新固件,然后路由器重新启动以应用更改(不到2分钟),然后尝试连接(大约10秒),即使这样,如果它得到一些其他IP,它永远不会加载,我的程序永远等待。因此,我想跳过所有这些,并且我希望程序在前2分钟后继续下一个路由器。能做到吗?我读了一些关于“页面加载策略”的东西,但我无法理解如何使用它。如果无法理解,请写信给我,因为英语不是我的母语。在下面你可以看到代码示例,在buter.submit()之后,它应该等待2分钟并继续,而不是永远等待:

def firmware_upload():
  global ip
  br.get("http://"+ip+"/upload.html")
  button = br.find_element_by_xpath('//input[@type="file" and @name="filename"]')
  button.send_keys("/home/djura/Downloads/KW5815A_update_140417")
  button.submit()
  print ("Odradjen UPDATE SOFTWARE-a!")
  return

共有2个答案

萧安怡
2023-03-14

问题可能是因为您使用了< code>button.submit,如果我没弄错的话,它会等待操作的返回。因此,您应该找到实际的提交按钮,并使用< code>click单击它,例如

submit_button = br.find_element_by_id('SUBMIT_BTN_ID')
submit_button.click()

注:在你的示例代码中,你的< code>button变量实际上引用了一个input元素,这个事实会引起误解。

涂煌
2023-03-14

看看这是否有效。

try
{
br.manage().timeouts().pageLoadTimeout(2, TimeUnit.MINUTES);
global ip
br.get("http://"+ip+"/upload.html")
button = br.find_element_by_xpath('//input[@type="file" and  @name="filename"]')
button.send_keys("/home/djura/Downloads/KW5815A_update_140417")
button.submit()
print ("Odradjen UPDATE SOFTWARE-a!")
return

}
catch(TimeoutException e)
{
print("2min over");
}
 类似资料:
  • 我试图创建一个等待加载页面的方法,但我出现了一个错误。可能我没有正确使用这个方法。 错误是:

  • 本文向大家介绍jQuery EasyUI 页面加载等待及页面等待层,包括了jQuery EasyUI 页面加载等待及页面等待层的使用技巧和注意事项,需要的朋友参考一下 下面一个代码片段是 easyUI 页面加载等待,代码如下所示: 下面看个工具类 基于easyui的页面等待提示层,即mask 效果图: 以上所述是小编给大家介绍的jQuery EasyUI 页面加载等待及页面等待层,希望对大家有所帮

  • 我对selenium webdriver有问题,如果有人能帮助我,我将非常感激 环境: 硒服务器独立-2.31.0.jar / 硒-服务器-独立-2.35.0.jar IE驱动程序服务器.exe(已尝试版本 2.28 - 2.35) 示例代码: 问题:修复这些问题都会对我有所帮助 href。sendKeys()成功模拟用户单击,但不等待页面加载。 href。click()无法模拟用户单击,但成功等

  • Selenium的SafariDriver似乎不会等待网页加载。我的测试如下: 如果您使用或运行此功能,它将正常运行,即搜索“您好世界”,然后在结果页面上转到图像结果。 使用,它会失败: 找不到的元素是“Images”,因为页面在运行该语句之前没有加载。 这是预期行为吗?我应该是狩猎旅行的特例吗?

  • 我正在使用selenium web驱动程序3.4.0查找网站的响应时间。在较早的版本中,我使用了WebDriver wait=new WebDriverWait(driver,10);Wait.Until(ExpectedConditions.VisibilityOfElementLocated(By.id(“myid”)));查找加载的页面。 但这两行代码不适用于版本3.4.0。有没有其他方法可

  • 我开发网络爬虫有一段时间了,对我来说最常见的问题是等待页面完全加载,包括请求,框架,脚本。我是说彻底结束了。 我使用了几种方法来修复它,但当我使用多个线程来抓取网站时,我总是遇到这种问题。驱动程序打开自己,通过URL,不等待并通过下一个URL。 我的尝试是: wait . until(expected conditions . visibilityofelementlocated(by . XPa