2017-04-03 42 views
0

工作我試圖在WebElement實例執行getText()但由於某種原因它不工作:pcresultsList.get(0).getText()
也許Winium不支持此方法?WebElement的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()); 
} 

抱歉沒有張貼,我得到的錯誤 - 該網站告訴我,我的代碼是不是縮進,當我試圖將其作爲代碼的網站告訴我有太多的代碼。 :)

+2

您可以在錯誤文本之前用'>'發佈錯誤。這可能會幫助你解決太多的代碼問題。或者您可以將錯誤的前幾行發佈,因爲這些通常是相關的部分。 – mrfreester

+0

什麼是'pcresultsList.size()'值? – kushal

回答

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循環通過元素迭代得到正文:

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

讓我知道,如果這可以幫助你。

0

我發現使用Winium時,您需要獲得Name屬性,因爲getText()無法正常工作。

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 

讓我們知道這會有所幫助。