2014-05-05 175 views
-1

從我的應用程序搜索後如何計算文本reoccurence從網格數量,我搜索了名,結果在與網格相關的員工新窗口中打開,我需要知道電話號碼從那個名字的網格出現。 就像尋找約翰的結果 - 約翰費爾南德斯,約翰麥克斯韋爾和約翰D souza。結果應該是3約翰的發現。使用硒網絡驅動程序

這不起作用:

WebElement text = driver.findElement(By.tagName("text")); 
     String bodytext=text.getText(); 
     System.out.println(bodytext); 

    //Verify the Name searched   
    int count=0; 

    while (bodytext.contains(name)){ 
     count++; 

     bodytext=bodytext.substring(bodytext.indexOf(name))+name.length(); 
    } 
+2

你得到了什麼錯誤?並查看'WebElement text = driver.findElement(By.tagName(「text」));'我不認爲,html頁面具有'text'作爲標記名。您能否爲其中一個編程名稱提供html代碼片段? – TDHM

+0

這是令人困惑的。這些子串是什麼?你打算做什麼?不是(你的代碼在上面)做什麼?元素中不是這些名字嗎?像在桌子上一樣?您似乎在整個文檔中搜索一段文字,然後無法理解您從那裏到另一段文字的方式。這表明您對DOM和頁面如何配合在一起缺乏一些瞭解。你不只是搜索整個身體的一些文字。 – Arran

+0

如果您還提供HTML代碼,則應該更好地提供解決方案。 –

回答

0

獲取路徑到電網前。

WebElements gridElements = driver.findElements(By.xpath("//table[@id='grid1']/tr/td")); 
system.out.println("No. of occ. is->"+gridElements.size()); 
0

By.tagName("text")將不起作用,因爲「文本」不是HTML標籤名稱。

使用XPath或更好的CSS選擇器。 您也可以使用JavaScript來計算返回的名稱數量。

如果你可以給結果頁面HTML我可以幫你找到CSS Selectore或Javascript,可以返回你的結果。

+0

是的,「文本」是錯誤的,糾正它。並添加「身體」作爲標記名,但我沒有得到任何錯誤,並在System.out.println(bodytext)打印身體; – user3510756

+0

當由於安全方面的原因,我不能提供完整的HTML片段,但這裏是網格的元素之一 – user3510756

+0

讓我們在下面http://www.w3schools.com/html/html_tables.asp JavaScript的表例子會給行數在表document.getElementsByClassName( '參考')[0] .getElementsByTagName( 'TR')。長度 – h4k3r

-1

讓我們從http://www.w3schools.com/html/html_tables.asp

下面的例子是用於獲取表中的行javascript代碼(它包括標題行也)

document.getElementsByClassName('reference')[0].getElementsByTagName('tr').length 

運行從網絡驅動器使用JavaScript

(String) ((JavascriptExecutor) driver).executeScript("document.getElementsByClassName('reference')[0].getElementsByTagName('tr').length"); 

希望這有助於。

+1

這可以使用天然硒方法來完成。 C#:'driver.FindElement(By.ClassName( 「參考」)FindElements(By.TagName( 「TR」))計數()'JS這裏不需要在所有 – Arran

+0

你是正確的是可以做到的。通過提到的方式,但也可以使用JavaScript。我不知道如果硒在後臺運行類似的JavaScript,但運行JavaScript,我們可以得到的結果在單個調用。 – h4k3r

0

那麼它得到了工作,唯一的問題是

bodyText的= bodytext.substring(bodytext.indexOf(名)+ name.length());