Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
硒+;Java |关于如何处理等待和断言的建议_Java_Selenium_Selenium Webdriver_Css Selectors - Fatal编程技术网

硒+;Java |关于如何处理等待和断言的建议

硒+;Java |关于如何处理等待和断言的建议,java,selenium,selenium-webdriver,css-selectors,Java,Selenium,Selenium Webdriver,Css Selectors,大家好,可能正在读这篇文章的人:p 我正在为我们正在工作中开发的几个新站点进行自动化,虽然我现在已经准备好了大部分,但我不确定处理这个特定场景的最佳方法是什么 该网站是一个店面,通常使用支付表单提交信用卡付款,然后在系统提示操作是否挂起、是否已完成或失败时显示加载屏幕。它是使用一个响应性框架完成的,这个框架的名字现在让我很难受(Angular?) 有3行,我想就如何处理一些建议 首先是等待加载的图像消失。这是生成它的HTML行: <div class="poll-loader-spinne

大家好,可能正在读这篇文章的人:p

我正在为我们正在工作中开发的几个新站点进行自动化,虽然我现在已经准备好了大部分,但我不确定处理这个特定场景的最佳方法是什么

该网站是一个店面,通常使用支付表单提交信用卡付款,然后在系统提示操作是否挂起、是否已完成或失败时显示加载屏幕。它是使用一个响应性框架完成的,这个框架的名字现在让我很难受(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>
但它似乎并没有像预期的那样工作,因为它返回了控制权,即使元素在屏幕上仍然可见,并且在60秒超时到期之前也是如此。对于元素不可见的上下文,类“ng hide”被添加到上面的HTML行中。有什么想法吗

==========

另一点是如何断言/验证两种可能的结果。以下是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 hide”类就会被删除(并添加到上面的加载栏中)。我的想法是为P标记之间的文本断言,但我不确定捕获该文本/整个元素的最佳方式是什么


理想情况下不使用xpath。如果没有比使用XPath更简单/干净的方法,我可以戳一下webdev,看看他是否可以在需要的地方添加ID

问题出在CSS选择器
”.poll loader spinner.ng scope“
-基本上,它会将元素与位于具有
poll loader spinner
类的元素内的
ng scope
类相匹配。而且,由于没有这样的元素,您就立即满足了预期条件

相反,只需使用
.poll loader微调器
CSS选择器


至于第二个问题,为什么不根据
ng show
定位元素并检查它们是否显示:

driver.findElement(By.cssSelector("div.poll-loader[ng-show*=SUCCESS]")).isDisplayed();
driver.findElement(By.cssSelector("div.poll-loader[ng-show*=ERROR]")).isDisplayed();

*=
这里的意思是“包含”。

删除css选择器中的空格字符。使用以下内容:

".poll-loader-spinner.ng-scope"

仅供参考,一般来说,
ng scope
不是css选择器内部使用的好选择。另外,在这里可以看到一些解释和修复。
".poll-loader-spinner.ng-scope"