【发布时间】:2014-09-26 09:00:27
【问题描述】:
我正在为 Firefox 使用带有 Selenium webdriver 的 python 2.7,我遇到了一个我无法解决或在 Internet 上找到解决的问题。 我的任务是打开大约 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
【问题讨论】:
-
“我的任务是打开大约 10k 网页......并上传新固件”——我相信这个任务不是 UI 自动化(即不是 Selenium 工作),而是与负载相关的事情测试。例如可以使用 Grinder 或 JMeter 完成。
-
O,但它是 UI 自动化。我必须登录到每个路由器并检查它是否需要升级。如果您有其他建议如何做到这一点,请分享。这是我知道要做的,所以我使用 Selenium。
-
既然你提到了其他方法...我可以尝试通过 telnet...但是如果我可以让 Selenium 不要等待它会是超级的,因为我已经为我的工作准备好了程序。
-
以 telnet 方式从头开始......两个版本在 telnet 上打印相同:-(
-
嗯,你可以尝试使用JMeter。使用 JMeter 编写非常简单的脚本或修改现有的脚本。尝试一下,如果您需要有关此工具的建议,欢迎您提出新问题。
标签: python selenium selenium-webdriver