2016-09-06 2 views
2

列1のテキストに基づいてhtmlテーブルの列5のボタンをクリックする必要があります。いいえID私はクリックする必要があります。各テーブルセルには複数のLiがあります。最初のセルにはそれぞれ名前、電子メール、会社名がLiにあります。 user name = fooはその後、COLのボタンをクリックするとXPath Java Seleniumは、別の列のテキストに基づいて1つの列の値をクリックしようとしています

は、私が言いたい5

列1にユーザー名を見つけるために私の現在のXPathは

driver.findElement(By.xpath("//tr//td//li[contains(text(), 'Edith Fields')]")); 

な(と作品)などであるが、私はしないでください私はその行の列5のボタンをクリックする行を使用していることを今知っている方法を知っている。また、特定の<Li>のWeb要素を返すxpathと仮定しますので、私はその親を取得する必要がありますか?

その大としてテーブル全体HTMLを貼り付けていないが、これはあなたがXPathの下に使用してみてください1つの行COL 1とCOL 5

<tr class=" ev_dhx_skyblue"> 
<td valign="middle" bgcolor="white" align="left" title=" Edith Fields [email protected] "> 
<ul> 
<li title=" Edith Fields [email protected] "> Edith Fields </li> 
<li class="last" title=" Edith Fields [email protected] "> [email protected] </li> 
</ul> 


<td valign="middle" bgcolor="white" align="left"> 
<ul> 
<li> 
<li class="last"> 
<a onclick="liftAjax.lift_ajaxHandler("ffffgggg=true", null, null, null); return false;">Reset Password</a> 
</li> 
</ul> 

答えて

0

です: -

String xpath = "(.//td[descendant::li[contains(text(), 'Edith Fields')]]/following::td//a[contains(text(), 'Reset Password')])[1]" 

それとも

String xpath = "(.//td[descendant::li[contains(text(), 'Edith Fields')]]/following::a[contains(text(), 'Reset Password')])[1]" 

または

String xpath = "(.//td[descendant::li[contains(text(), 'Edith Fields')]]/following::a)[1]" 

以下のように要素を見つけるためにxpathの上にこれらのいずれかを使用します -

driver.findElement(By.xpath(xpath)); 
0

をあなたはそれが常に第五列が残ることが確実な場合は、他にこの

//td[contains(.,'Edith Fields')]/following-sibling::td[4]//a 

この

を使用を使用
//td[contains(.,'Edith Fields')]/following-sibling::td[contains(.,'Reset Password')]//a 
関連する問題