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

时间:2014-08-03 21:31:29

标签: python selenium selenium-webdriver

我正在使用python 2.7和Selenium webdriver for Firefox,我有一个问题,我无法在互联网上解决或找到解决方案。 我的任务是打开大约10k网页(adsl路由器web界面 - 通过ip地址)并上传新固件。我写了代码,但为了完成它我必须学习如何使selenium webdriver不要像永远等待页面加载,而是等待2分钟(这是新固件上传所需的时间)然后继续下一步。 我以为我让它等待永远(等待路由器重新连接 - 慢得多,但我可以在没有帮助的情况下完成)但是当我点击上传按钮时需要2分钟上传新固件,然后路由器重新启动以应用更改(需要不到2分钟),然后尝试连接(大约10秒),如果它得到一些其他IP它永远不会加载,我的程序永远等待。 所以,我想跳过所有这些,我希望程序在前2分钟后进入下一个路由器。可以吗?我读了一些关于" pageLoadingStrategy"但我无法理解如何使用它。 如果不可理解,请写信给我,因为英语不是我的母语。下面你可以看到代码示例,在button.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 个答案:

答案 0 :(得分:0)

问题可能是因为您正在使用button.submit,如果我没有错误等待返回操作。因此,您应该找到实际提交按钮并使用click点击它,例如

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

P.S。事实上,在您的示例代码中,您的button变量实际上引用了一个输入元素会产生误导。

答案 1 :(得分:0)

看看是否有效。

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");
}