当前位置: 首页 > 面试题库 >

如何在量角器中为元素存在或不存在创建条件

裴钧
2023-03-14
问题内容

我正在使用Protractor JS。该网站是用Angular JS编写的。

所以我有一个拨动开关。我注意到切换开关中的值从true变为false,从false变为true时将其关闭或打开。

我正在尝试创建一个条件,当量角器访问我的页面时,看到切换开关“关闭”,它将打开它。如果拨动开关已经“打开”,它将首先将其“关闭”,然后再次将其“打开”。

我想出了这段代码,但是由于某种原因它无法正常工作:

 if( expect(element(By.id('toggle-switch')).element(By.css('[value="false"]')).isDisplayed()) ) {
            element(By.id('toggle-switch')).click();
            console.log('in the if')
       }

       else{
           element(By.id('toggle-switch')).click();
           browser.sleep(3000);
           element(By.id('toggle-switch')).click();
           console.log('in the else')
       }

该代码似乎仅适用于if语句。由于某种原因,它将永远不会消失。这是我收到的错误:

NoSuchElementError:使用定位器找不到元素:By.cssSelector(“ [value = \” false \“]”)

所以我尝试了

.isPresent()而不是.isDisplayed()
我不再收到上述错误,但是由于某些原因,在使用.isPresent()时,它始终转到if语句,仅运行该语句,而不执行else语句。没有显示错误。

如果有更好的方法,请告诉我。这似乎很局限,无法在此框架中创建适当的条件。


问题答案:

请记住,这isDisplayed()返回了一个承诺,您可以尝试:

element(anyFinder).isDisplayed().then(function(result) {
    if ( result ) {
        //Whatever if it is true (displayed)
    } else {
        //Whatever if it is false (not displayed)
    }
});


 类似资料:
  • 问题内容: 在量角器端到端测试中,我想使用我的代码element(by.css(…))检查某个元素是否存在: 该测试失败,它说: 之后,我尝试使用一个承诺: 这将导致错误: 错误:使用定位器By.CssSelector(…)未找到任何元素 是的,我知道将找不到任何元素,但是如何使用element()创建工作测试? 有谁知道如何实现这一目标?还是不是这里使用的方法? 问题答案: 您可以通过检查是否存

  • 问题内容: 我在使用量角器时遇到了一些麻烦。我有一个非常奇怪的ui- router状态,很难摆脱其他元素来开始使用该页面。有没有办法告诉量角器等到元素最终出现在DOM中?不可见/未显示,但实际上已创建?我一直尝试使用等待元素,但是显然无法选择它。 问题答案: 您应该能够与ExpectedCondition一起使用:

  • 问题内容: 在Selenium 2中,我要确保驱动程序已加载的页面上的元素不存在。我在这里包括了我的幼稚实现。 有没有一种更优雅的方法可以从根本上验证断言是否引发了NoSuchElementException? 问题答案: 如果您正在使用junit进行测试,而这只是您要进行的测试,则可以使测试使用来预期异常 或者,您可以使用返回元素列表的方法,如果找不到元素,则返回一个空列表(不抛出): 要么

  • 我试图使用Python在azure存储中创建blob容器。我正在使用MSDN提供的文档在我的python程序中集成azure blob存储。 代码如下: 第一次创建blob容器,但第二次就出错了。

  • 问题内容: 我试图让Selenium等待页面加载后动态添加到DOM的元素。试过这个: 如果有帮助,这里是: 但是它抛出一个-看起来像期望元素存在,所以这是有缺陷的。这一定是Selenium的面包和黄油,不想重新发明轮子……任何人都可以提出其他选择,理想情况下不用自己动手做? 问题答案: 需要等待时,您需要异常调用以忽略。 有关更多信息,请参见FluentWait文档。但是请注意,此条件已经在Exp

  • 问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。