我使用selenium webdriver进行半自动测试(使用python 3)。半自动化意味着,有一些例程,每次都会发生,但也有一些用户与浏览器的交互(可能的页面刷新,重定向,...)
我需要的是永久注入javascript代码,每次刷新时执行该代码。 Selenium execute_script
生成匿名函数包装器,每次刷新都会丢失。
那么有没有办法创造这样的例行程序?可能(并且很好)解决方法是检测浏览器何时刷新(并且我不确定是否可能)以及每次再次注入js。
我不知道要创建任何浏览器扩展,因为js代码只是框架的一部分并且正在开发中。 (而且我还需要在Chrome和Firefox中执行此操作,这需要更多的工作来处理它)。
感谢您的帮助:)
答案 0 :(得分:1)
我建议在页面重新加载后尝试执行时,使用try除了Selenium抛出的特定错误的功能。这样你就可以专注于修复抛出的错误。然后你可以执行javascript并实现递归编程来重新执行你正在尝试的最后一个语句。
蟒
driver.execute_script("script goes here")
#call function at thrown exception place in script
注册事件监听器可能允许您在事件发生时捕获它。这实际上取决于发生的事情以及通信的发生方式。以下是对此的参考:http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/support/events/WebDriverEventListener.html