【发布时间】:2018-12-06 17:41:36
【问题描述】:
我一直在尝试从各种 div 和表格中获取我在 Cucumber 中编写的一些 BDD 的文本。每次我尝试从我正在处理的网站的前端获取任何东西时,它什么都没有。我需要知道我具体需要做什么才能获取此内容。
我试图从中检索的页面元素与此类似
<div id="statMsg" class="statusMsg">Your changes are saved.</div>
这是当前尝试从 div 中检索文本的两种方法。
public WebElement savedText() {
return webdriver.findElement(By.className("statusMsg"));
public void UserClicksOnSave() throws InterruptedException {
daSave.saveOn().click();
daPage.savedText().getText();
【问题讨论】:
-
猜这是一个时间问题,代码在 div 可见之前检查。您是否尝试过使用 ExpectedCondition 来了解此元素的可见性。要对此进行测试,请尝试放置一个 thread.sleep 来确认它是否是时间问题。如果你使用 id 来选择元素而不是类,那就更好了。也许你在文本元素之前的层次结构中得到了一些元素,具有相同的类属性。
-
我昨天下午确实这样做了,它奏效了。
-
你没有抓住重点。在您的代码单击保存按钮和检查文本之间没有延迟。看起来您正在使用页面对象,因此您也可能需要刷新页面对象才能获取文本,但您可能只需要等到页面完成后再检查文本。如果它有时有效但有时无效,则几乎总是时间问题或刷新问题。
-
我更精通在 C# 中使用 Selenium,但应该有一种方法可以让 Web 驱动程序“等待”某个条件为真。基本上,让网络驱动程序等待文本出现在 DIV 中。在单击按钮和 Selenium 从屏幕上的元素获取文本之间,您可能会出现竞争条件,它获取文本的速度比屏幕上更改文本的速度要快。或者它找到 DIV 太快了。
标签: java selenium cucumber bdd