我正在使用Selenium来检查当用户发送空字段的表单时是否显示错误消息。错误消息块一直附加到DOM,但当没有错误时,它会显示“显示:none;”style属性。因此,当我按下“保存”按钮时,我检查这个块是否以这种方式可见:
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());
它总是失败,我真的不明白为什么,怎么检查,错误信息的文本显示,正确的方式。
**UPD:**我已经找到了问题的根源。这个字符串没有在“validationModal”块中找到元素,而是在包含我们必须找到的文本的标记中找到了元素。
driver.findElement(By.id("validationModal")).findElement(By.tagName("ul"))
.findElement(By.xpath("//*[contains(text(),'Empty app name field')]")).isDisplayed()
但我仍然不明白为什么会发生这种情况,因为我指定了应该在哪里搜索它的元素。
3条答案
按热度按时间3b6akqbq1#
看起来你在尝试与一些模态框架交互。
通常,要与模态元素交互,您应该首先更改驱动程序上下文。
或
查找或检查元素,然后返回主框架
jyztefdp2#
试试这个:
fwzugrvs3#
xpath中有错误。
错误字符串为:
右边是: