【问题标题】:isDisplayed always returns false for the specific elementisDisplayed 总是为特定元素返回 false
【发布时间】:2015-12-15 22:56:19
【问题描述】:

我正在使用 Selenium 来检查用户发送带有空字段的表单时是否显示错误消息。错误消息块一直附加到 DOM,但是当没有错误时,它会显示“display: none;”样式属性。因此,当我按下“保存”按钮时,我会检查此块是否以这种方式可见:

Assert.assertTrue("There is no validation error!", driver.findElement(By.id("validationModal")).isDisplayed());

这行得通。但是当我试图检查这个块中的消息是否显示时,isDisplayed 方法总是返回“false”。当我只使用这个时:

driver.findElement(By.id("validationModal")).findElement(By.tagName("ul"))
            .findElement(By.xpath("//*[contains(text(),'Empty app name field')]"));

一切正常,但它是错误的,因为当该文本不可见时它不会抛出异常,而是在页面代码中。如果我写这个:

Assert.assertTrue(driver.findElement(By.id("validationModal")).findElement(By.tagName("ul"))
            .findElement(By.xpath("//*[contains(text(),'Empty app name field')]")).isDisplayed());

它总是失败。而且我真的不明白为什么以及如何检查,错误消息的文本以正确的方式显示。


更新: 我找到了问题的根源。这个字符串不是在“validationModal”块内找到元素,而是在标签内找到,其中包含我们必须找到的文本。

driver.findElement(By.id("validationModal")).findElement(By.tagName("ul"))
                .findElement(By.xpath("//*[contains(text(),'Empty app name field')]")).isDisplayed()

但我还是不明白为什么会这样,因为我指定了应该搜索的元素。

【问题讨论】:

  • 你能分享你的html吗?
  • 我不确定,但是查看我发现的页面代码,错误的内容并不是我想的那样,所以我猜这是问题的根源,因为附加了内容使用脚本动态地。

标签: java selenium


【解决方案1】:

您似乎正在尝试与某个模态框架进行交互。

通常要与模态元素交互,您应该首先更改驱动程序上下文。

driver.switchTo().frame("ModelFrameTitle");

driver.switchTo().activeElement()

查找或检查元素,然后返回主框架

driver.switchTo().defaultContent()

【讨论】:

    【解决方案2】:

    试试这个:

     Assert.assertTrue("Element is not displayed",driver.findElement(By.xpath("//*[contains(text(),'Empty app name field')]")).isDisplayed());
    

    【讨论】:

      【解决方案3】:

      xpath 中有错误。

      错误的字符串是:

      findElement(By.xpath("//*[contains(text(),'Empty app name field')]"))
      

      正确的是:

      findElement(By.xpath("//li[contains(text(),'Empty app name field')]"))

      【讨论】:

        猜你喜欢
        • 2019-02-09
        • 1970-01-01
        • 2017-08-23
        • 2022-10-17
        • 1970-01-01
        • 1970-01-01
        • 2013-12-18
        • 2022-01-26
        • 1970-01-01
        相关资源
        最近更新 更多