我试图对其运行黑盒测试的web应用程序可以使用ajax调用,但这些ajax调用在DOM上不呈现任何内容,因此我不能使用显式等待。此外,隐式只适用于find_element
语句,同样没有用处。
我成功地使用了time.sleep()
,但我希望有更好的方法来延迟执行。
据我所知(这里是凌晨1点,我可能会错过一些东西),您需要您的测试与AngularJS同步,等待未完成的请求和angular来“稳定下来”。
在Javascript世界中,Protractor
完美地解决了这一点--它总是知道Angular何时准备就绪,并使测试更加自然,您甚至不考虑同步问题--它工作流畅,开箱即用:
您不再需要在测试中添加等待和睡眠。当网页完成挂起的任务时,Protractor可以自动执行测试中的下一步,因此您不必担心等待测试和网页同步。
它构建在protractor的某些部分上,protractor是Angular.js的“官方”Javascript E2E/Scenary测试框架。
作为一个危险信号,请注意项目没有被积极维护。至少,您可以研究源代码并使用代码中引入的思想。
请注意,protractor
和pytractor
在内部注入异步执行的客户端脚本。为了等待Angular“就绪”,它们都使用Angular.gettestability(el).whenstability()
(source)。
我实际上有三个问题: Selenium WebDriver如何实现此 因为我们不能给无限睡眠的线程一个负值。 有没有更好的方法来实现无限等待? 我们在SeleniumWebDriver文档中看到了这一点
在C#中,我有以下两个简单的例子: 第一个示例创建一个打印“开始”的任务,等待5秒钟打印“完成”,然后结束任务。我等待任务完成,然后打印“全部完成”。当我运行测试时,它会按预期运行。 第二个测试应该具有相同的行为,只是由于使用了async和Wait,任务内部的等待应该是非阻塞的。但是这个测试只打印“开始”,然后立即打印“全部完成”和“完成”,永远不会打印。 我不知道我为什么会有这样的行为:S非常感
问题内容: 我如何将while循环延迟到1秒的间隔,而又不将正在运行的整个代码/计算机的速度减慢到1秒钟的延迟(只是一个小循环)。 问题答案:
通过添加while(ele==null)循环,我让代码大部分时间都在调试器之外运行和工作。非常难看。这让我认为我需要使用包装器覆盖FindElements()函数,但不知道如何这样做来增加一些延迟。Selenium Webdrive中的显式等待findElements有一个示例,但它是用JavaScript编写的。我把这个示例放在下面的代码中。有人能指导我吗?
问题内容: 我已经看到和在使用selenium的代码。使用轮询技术,即它将针对特定的每个固定间隔进行轮询。我想知道如何处理? 考虑以下Java示例: 监视器是否可单击,或者等待18秒钟再单击? 问题答案: 在您的示例中,在超时之前,将持续18秒(每0.5秒)查找一次“帐户”。 是的子类。在其中,您可以配置更多选项以及最长的等待时间,例如轮询间隔,忽略的异常等。此外,在您的代码中,您无需等待,然后可
问题内容: 我有一段代码的行为会有所不同,具体取决于我是通过字典获取转换因子还是直接使用它们。 以下代码将打印 但是,如果你更换用,并用它将打印 首先让我说我很确定这里发生了什么。我以前在C中看到过它,但是在Python中却从未见过,但是自从Python在C中实现以来,我们已经看到了它。 我知道浮点数将更改从CPU寄存器到缓存以及返回的值。我知道比较两个相等的变量应该返回false,如果其中一个被