gpt4 book ai didi

java - isDisplayed 对于特定元素始终返回 false

转载 作者:太空宇宙 更新时间:2023-11-04 13:07:29 24 4
gpt4 key购买 nike

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

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

这有效。但是当我尝试检查该 block 中的消息是否显示时,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” block 内找到元素,而是在标签内找到元素,其中包含我们必须找到的文本。

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

但我仍然不明白为什么会发生这种情况,因为我指定了应该搜索它的元素。

最佳答案

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

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

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

driver.switchTo().activeElement()

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

driver.switchTo().defaultContent()

关于java - isDisplayed 对于特定元素始终返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com