量角器-茉莉花。仅在存在特定元素时才执行某些操作。

时间:2018-11-27 13:42:52

标签: javascript testing automation jasmine protractor

我有一个带有两个按钮“添加”和“关闭”的窗口框。我需要测试以下情况: 单击“添加”按钮时,它将引发错误,并且窗口保持打开状态。我需要点击“关闭”按钮才能继续。

我使用了以下代码:

if(element(by.xpath("xpath_of_error_box")).isEnabled()) 
    {   
        element(by.xpath("xpath_of_close_button")).click();
    }

但是它抛出以下错误:

No element found using locator: By(xpath, xpath_of_error_box)

有什么办法可以解决这个问题?

3 个答案:

答案 0 :(得分:1)

根据该错误,您的xpath定位符似乎与任何元素都不匹配。根据问题的其他说明,您可以尝试:

<ul class="dropdown menu" data-dropdown-menu data-close-on-click-inside="false">

正如所指出的那样,在这种情况下,isEnabled可能不是您应该使用的正确方法。如果您尝试查找的元素似乎总是存在于dom中,则最好使用isDisplay来检查其可见性。 一个建议。在测试中使用xpath定位符不是一个好主意,因为这会将它们与您正在观察的网页的html DOM结构相关联。我们知道,UI经常更改,这也会使您的测试也经常制动。尽管这是个人喜好的选择,但直到对HTML进行一次很小的更改后,您最终进行了大量的Brocken测试,情况才如此。

答案 1 :(得分:0)

如果需要检查是否存在元素,则可以使用以下代码:

if (element(by.xpath("yourXpath")).isPresent())

但是您的问题不在您的if代码上,您的问题是您搜索的xpath不存在。

答案 2 :(得分:0)

  1. 1.0.x1.0.*返回Promise(不是布尔值),必须解决。
  2. isEnabled()只能用于isPresent()
  3. 您可以一直使用XPath,而不用听别人的话。

PS。当然,很高兴看到您的HTML检查XPath的正确性。