嗨,不管谁可能会读这个:P。Selenium + Java |关于如何处理等待和声明的建议
我正在为我们在工作中开发的几个新网站进行自动化操作,虽然我现在已经大部分时间已经熟化了,但我不确定处理这种特定情况的最佳方法是什么。
该网站是一个店面,通常付款表格提交信用卡付款,然后系统通知您系统是否正在等待,已完成或失败时的加载屏幕。它是通过一个响应式框架来完成的,它的名字现在让我感到遗憾(Angular?)。
有3条线,我想就如何处理一些建议。
首先正在等待,直到加载图像消失。这是HTML线产生的:
<div class="poll-loader-spinner ng-scope" ng-show="editCtrl.pollInfo.status === 'PENDING' || editCtrl.pollInfo.status === 'RETRY'"><div class="hexdots-loader">Loading...</div></div>
我一直试图做的,是这样的:
new WebDriverWait(getDriver(), 60).until(ExpectedConditions.
invisibilityOfElementLocated(By.cssSelector(".poll-loader-spinner .ng-scope")));
但它似乎并没有被按预期工作,因为它甚至返回控制当元素在屏幕上仍然可见并且在60秒超时过期之前。对于元素不可见时的上下文,类'ng-hide'被添加到上面的HTML行。有什么想法吗?。
==========
的其它位是如何断言/验证2个可能的结果。这些是HTML行:
<div class="poll-loader ng-scope ng-hide" ng-show="editCtrl.pollInfo.status === 'SUCCESS'"><i class="fa fa-check poll-fa-icon"></i><p>Congrats! Your course has been successfully paid for!</p></div>
<div class="poll-loader ng-scope ng-hide" ng-show="editCtrl.pollInfo.status === 'ERROR'"><i class="fa fa-times-circle poll-fa-icon"></i><p>I'm sorry, there seems to be an error.</p></div>
每当一条线是在浏览器中“NG-隐藏”类被移除(并添加到加载条以上)可见。我的想法是为P标签之间的文本声明,但我不确定捕获文本/整个元素的最佳方式是什么。
理想情况下不使用xpath。如果没有其他简单/干净的方法比使用XPath更好,我可以戳webdev并查看是否可以在需要时添加ID。
仅供参考,一般来说'ng-scope'不是在css选择器中使用的好选择。另外,一些解释和解决方法一起可以很好地在这里看到。 – alecxe