2017-10-12 3 views
0

下の要素を見つけることです私はWebElement.findElement方法はwebdriverをスコープ

<html> 
 

 
<head></head> 
 

 
<body> 
 
    <table id="Original"> 
 
    <tr> 
 
     <td>Original-11</td> 
 
     <td>Original-12</td> 
 
     <td>Original-13</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Original-21</td> 
 
     <td>Original-22</td> 
 
     <td>Original-23</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Original-31</td> 
 
     <td>Original-32</td> 
 
     <td>Original-33</td> 
 
    </tr> 
 
    </table> 
 

 
    <br/><br/> 
 

 
    <table id="Duplicate"> 
 
    <tr> 
 
     <td>Duplicate-11</td> 
 
     <td>Duplicate-12</td> 
 
     <td>Duplicate-13</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Duplicate-21</td> 
 
     <td>Duplicate-22</td> 
 
     <td>Duplicate-23</td> 
 
    </tr> 
 
    <tr> 
 
     <td>Duplicate-31</td> 
 
     <td>Duplicate-32</td> 
 
     <td>Duplicate-33</td> 
 
    </tr> 
 
    </table> 
 
</body> 
 

 
</html>

セレンJavaコードを私のセレンテストを実行しようとしていた上で、次のHTMLコードを持って次のようになります。次のように

public static void main(String[] args) throws Exception 
    { 
     System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "/src/test/drivers/chromedriver.exe"); 

     WebDriver drv = new ChromeDriver(); 
     drv.get("C:/Users/MYUserName/git/er_test/SeleniumTestHtml.html"); 

     WebElement tableElement = drv.findElement(By.id("Duplicate")); 
     WebElement rowElement = tableElement.findElement(By.xpath("//tr[2]")); 
     WebElement cellElement = rowElement.findElement(By.xpath("//td[2]")); 
     System.out.println(rowElement.getText()); 
     System.out.println(cellElement.getText()); 

     drv.close(); 
     drv.quit(); 

    } 

私は結果を期待しています:
重複-21 Duplica TE-22重複-23
重複-22

しかし、私はこの結果を取得しています:
オリジナル-21オリジナル-22オリジナル-23
オリジナル-12

私はここで何か間違ったことをやっていますか?

答えて

4

あなたの問題は、//がトップルート要素から検索に戻ることです。

WebElement rowElement = tableElement.findElement(By.xpath("//tr[2]")); 

あなただけの現在の要素の中身を検索する必要がある場合は、あなたが明確化のため

WebElement rowElement = tableElement.findElement(By.xpath(".//tr[2]")); 
+0

感謝を使用する必要があります

WebElement rowElement = driver.findElement(By.xpath("//tr[2]")); 

ほど良いですが意味

。それはうまくいった。 – Animesh

関連する問題