javascript-Selenium WebDriver和通用等待或延迟
作者:互联网
因此,我急切地想寻找一种方法来延迟WebDriver中的某些执行,但是我似乎找不到.
我尝试对其进行黑盒测试的Web应用程序可以使用ajax调用,但是这些ajax调用不会在DOM上呈现任何内容,因此我不能使用显式等待.同样,隐式仅适用于find_element语句,再次将不再有用.
我使用time.sleep()取得了成功,但我希望有更好的方法来延迟执行.
解决方法:
据我了解(现在是凌晨1点,我可能会错过一些东西),您需要将测试与AngularJS同步,等待未完成的请求和angular的“解决”.
这就是在Javascript世界中protractor
可以完美解决的问题-它始终知道Angular准备就绪的时间,并且可以使测试更加自然,甚至不用考虑同步问题-它可以顺畅地工作:
You no longer need to add waits and sleeps to your test. Protractor
can automatically execute the next step in your test the moment the
webpage finishes pending tasks, so you don’t have to worry about
waiting for your test and webpage to sync.
对于Python,有一个pytractor
项目听起来像您应该评估的东西:
pytractor is an extension to the Selenium bindings for Python. Its
goal is to make testing of angular.js applications easier with Python.It is built on some parts of protractor, the “official” Javascript
E2E/Scenario testing framework for Angular.js.
作为一个危险信号,请注意该项目未得到积极维护.至少,您可以研究源代码并使用代码中引入的思想.
请注意,内部量角器和pytractor注入异步执行的客户端脚本.为了等待Angular准备就绪,它们都使用angular.getTestability(el).whenStable()(source).
也可以看看:
> Understanding execute async script in Selenium
> Using Angular JS(Protractor) with Selenium in Python
> Force Selenium to wait for AngularJS
标签:angularjs,selenium,selenium-webdriver,javascript,python 来源: https://codeday.me/bug/20191120/2040333.html