永久/每次刷新时都使用selenium注入javascript

永久/每次刷新时都使用selenium注入javascript,javascript,python,selenium,selenium-webdriver,Javascript,Python,Selenium,Selenium Webdriver,我使用SeleniumWebDriver(使用Python3)进行了半自动测试。半自动化意味着,有一些例程,每次都会发生,但也有一些用户与浏览器的交互(可能的页面刷新、重定向等) 我需要的是永久注入javascript代码,每次刷新页面时都会执行该代码。Seleniumexecute\u脚本生成匿名函数包装器,每次刷新都会丢失 那么有没有办法创建这样的例程呢?可能(也很好)的解决方法是检测浏览器何时刷新(我不确定是否可能),并每次再次注入js 我不知道创建什么浏览器扩展,因为js代码只是框架的一

我使用SeleniumWebDriver(使用Python3)进行了半自动测试。半自动化意味着,有一些例程,每次都会发生,但也有一些用户与浏览器的交互(可能的页面刷新、重定向等)

我需要的是永久注入javascript代码,每次刷新页面时都会执行该代码。Selenium
execute\u脚本
生成匿名函数包装器,每次刷新都会丢失

那么有没有办法创建这样的例程呢?可能(也很好)的解决方法是检测浏览器何时刷新(我不确定是否可能),并每次再次注入js

我不知道创建什么浏览器扩展,因为js代码只是框架的一部分,正在开发中。(我还需要在Chrome和Firefox中这样做,这需要更多的工作来处理)


感谢您的帮助:)

我建议您在重新加载页面后尝试执行时,对Selenium抛出的特定错误使用try-except功能。这样,您就可以专注于修复抛出的错误。然后,您可以执行javascript并实现递归编程,以重新执行您尝试的最后一条语句

蟒蛇

    driver.execute_script("script goes here")
    #call function at thrown exception place in script

注册一个事件监听器可能允许您在事件发生时捕获它。这真的取决于将要发生的事情以及这些事情的沟通渠道。以下是这方面的参考:

我认为在刷新页面时不会引发此类异常。Selenium看起来非常单向,因此您可以控制浏览器,但无法检索用户操作(如按用户重定向到不同的页面)-没有引发异常(据我测试),Selenium 1支持名为user-extension.js的东西,允许用户以我想要的方式将js注入浏览器(而不是页面环境)。但据我所知,Selenium2WebDriver不支持此功能。如果我误解了你的观点,请纠正我:)某种程度上,我应该更清楚一些……我会编辑。我的意思是,如果您试图在一个与您期望的不一样的页面上执行Selenium代码,那么它将不起作用并抛出一个错误。因此,您实际上不会捕获页面错误,而是捕获Selenium执行错误,因为页面不是您所期望的。然后执行javascript将其恢复到预期状态,并递归调用失败的函数。这更清楚吗?如果不是的话,我可能不明白这个刷新到底是什么原因,在这种情况下,你能放一些代码来澄清吗?我现在明白了。它是有效的-但出于我的目的,我需要定期检查(尝试一些东西),这不是很好,但可以接受,如果没有找到其他解决方案,谢谢。再说一遍,我不知道你的代码…但是你可以注册一个Selenium事件监听器,它将启动。如果您想针对特定的可检测对象,那么这可能更适合您……然后您可以在其中执行脚本。在上面编辑。。。