【问题标题】:Selenium (java) can't get text from nested element without printing itSelenium(java)无法从嵌套元素中获取文本而不打印它
【发布时间】:2013-09-16 11:55:31
【问题描述】:

我尝试从模式弹出窗口的标题中获取文本。在页面上有许多这样的窗口 - 每个都有唯一的 id。在每个这样的模态窗口中,所有元素都有相同的类名,所以首先我需要指向正确的窗口,然后寻找特定的元素。 所以我用这段代码来做:

public String getRFRTitle(String rfrNumber) {
    return driver.findElement(By.id("rfr-details-dialog-"+rfrNumber)).
            findElement(By.className("modal-title")).getText();  
}

但它没有为我显示任何东西。 我发现,当我之前打印这个标题文本时,这个功能可以正常工作。 我在从函数返回值之前添加了这个:

System.out.println("tite: "+ driver.findElement(By.id("rfr-details-dialog-"+rfrNumber)).
        findElement(By.className("modal-title")).getText());

我尝试在返回文本之前初始化变量,但没有运气。 我可以采用我的解决方法,但我很好奇这个 Java 或 Selenium 问题。

【问题讨论】:

  • 我以前从未见过这样的事情,我一直使用 getText().equals("text") (没有 System.out.println)。我的猜测是这是一个等待问题。看看你是否可以等待一个元素出现,然后获取文本。

标签: java selenium selenium-webdriver


【解决方案1】:

这很可能是超时问题。以下可能对您有用,如果没有,堆栈跟踪将为您提供更多反馈。

By locator = By.cssSelector("#rfr-details-dialog-" + rfrNumber + " .modal-title");
int timeoutInSeconds = 10;

WebElement foundElement = new WebDriverWait(webdriver, timeoutInSeconds).until(ExpectedConditions.visibilityOfElementLocated(locator));

System.out.println("tite: " + foundElement.getText());

【讨论】:

  • 谢谢,现在可以使用了。我不知道我可以将这样的定位器用于模态弹出窗口: By.cssSelector("#rfr-details-dialog-" + rfrNumber + " .modal-title");
猜你喜欢
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 2023-03-07
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多