WebElement getText()不适用于Winium-Desktop

时间:2017-04-03 16:59:58

标签: java selenium ui-automation

我试图在getText()个实例上执行WebElement但由于某种原因它无法正常工作:pcresultsList.get(0).getText()
也许Winium不支持这种方法?

我的代码是:

public void monitorBasic() throws InterruptedException {
    monitorFrame = driver.findElement(By.name("BEAM Monitor"));
    WebElement resultsFrame = monitorFrame.findElement(By.id("ReportListBox"));
    List<WebElement> pcresultsList = resultsFrame.findElements(By.className("TextBlock"));
    System.out.println(pcresultsList.get(0).getText());
}

抱歉没有发布我收到的错误 - 网站告诉我我的代码没有缩进,当我试图将其作为代码呈现时,网站告诉我代码太多了。 :)

3 个答案:

答案 0 :(得分:1)

您是否尝试过使用:

System.out.println(pcresultsList.get(0).getAttribute("Value"));

还尝试获取元素的其他属性以确认您可以获取信息。

以下代码适用于我:

element = Window.findElement(By.xpath("//*[contains(@ControlType,'ControlType.DataItem') and contains(@Name,'G15')]"));
    System.out.println("Cell text: " + element.getText()); //writes Shipments

如果有帮助,请告诉我们。

答案 1 :(得分:0)

据我所知,你试图从一个框架内的元素中获取一些文本。在这种情况下,您需要先切换到帧,然后获取帧内任何元素的文本。

你需要这样做:

  1. 将ImplicitlyWait应用2/3秒。

  2. driver.switchTo().frame("BEAM Monitor"); //假设该框架名称为

  3. 然后点击框架内的元素: driver.findElement(By.id("ReportListBox")).click();

  4. 创建一个列表以获取列表中的所有元素:

    List<WebElement> pcresultsList = driver.findElements(By.className("TextBlock"));
    
  5. 创建一个for循环来迭代元素以获取文本:

  6. for(WebElement pcresult : pcresultsList)
    {
        System.out.println(pcresult.getText());
    }
    

    如果这有助于您,请告诉我。

答案 2 :(得分:0)

我发现使用Winium时,您需要获取Name属性,因为getText()无效。