检查是否在量角器中显示了2个元素中的1个

时间:2018-07-23 22:35:34

标签: javascript typescript protractor e2e-testing angularjs-e2e

在量角器的测试中,我期望最后看到 element1 element2 仅当显示 element1 并且页面上没有 element2 时,“解决方案”才有效

expect(element1.isDisplayed() || element2.isDisplayed()).toBeTruthy();

如果页面上没有 element1 element2 在页面上-我收到了错误消息:

 Failed: No element found using locator: ...(element1 locator)

我无法在只有一个期望的情况下编写测试,这是对Data的测试,在我的情况下,可能有2个结果。 如何验证页面上是否显示了两个元素之一?

2 个答案:

答案 0 :(得分:3)

我认为git config --global credential.helper 'cache timeout 3600' git clone https://myuser@bitbucket.org/myproject/myrepo.git ### password should be prompted git clone https://myuser@bitbucket.org/myproject/mysecondrepo.git ### look ma, no password prompt! git clone https://myuser@bitbucket.org/myproject/mythirdrepo.git git clone https://myuser@bitbucket.org/myproject/myfourthrepo.git git clone https://myuser@bitbucket.org/myproject/andsoforthrepo.git 不理解表达式Jasmine,因此,即使不显示这两个元素,该断言仍然会通过。

ExpectedConditions API提供element1.isDisplayed() || element2.isDisplayed()操作。

and/or

答案 1 :(得分:1)

首先,检查isDisplayed()是否是您要使用的正确函数。

您的元素是实际呈现的但只是设置为隐藏的,还是不在页面中?如果只是隐藏,则可以使用isDisplayed()。如果它不在页面中,那么您需要找到一种更好的方法来包装元素.isDisplayed()的检查,甚至找到一个更合适的函数。

发生的事情是您的测试试图确定element1.isDisplayed()是true还是false,而是得到一个'使用定位器没有找到元素:element1'。假设,如果您的定位器是id ='my-element-1',则意味着Webdriver尝试在呈现的页面中找到一个ID为'my-element-1'的元素,却一无所获,而使用element1.isDisplayed( ),您要让网络驱动程序告诉您element1可见性是否隐藏。

底线isDisplayed returns a promise,您必须妥善处理,否则,只要返回的结果不是您的期望,就会遇到麻烦。