2017-07-31 61 views
0

我已經嘗試了幾個xpath來選擇下拉列表。但沒有任何工作。如何使用xpath選擇超出標籤的下拉項目

一些使用XPath的我的如下:

By.xpath("//table/tbody/tr[2]/td[2]/span").click; 

或者

By.xpath("/td[2]/span[contains(text(),'NATIONAL IDENTITY DOCUMENT')]").click; 

請找到下面的html標籤,我需要選擇相應的值是「尋求庇護者許可批件」或'國家身份證件'。

<tbody> 
<tr id="jP2Qrg" class="z-comboitem"> 
<td class="z-comboitem-img"/> 
<td class="z-comboitem-text"> 
<span class="z-comboitem-spacer"/> 
ASYLUM SEEKER PERMIT DOCUMENT 
</td> 
</tr> 
<tr id="jP2Qsg" class="z-comboitem z-comboitem-over"> 
<td class="z-comboitem-img"/> 
<td class="z-comboitem-text"> 
<span class="z-comboitem-spacer"/> 
NATIONAL IDENTITY DOCUMENT 
</td> 
</tr> 
</tbody> 

當我嘗試使用firepath來使用xpath時,它是動態的。每次xpath和id都在不斷變化。所以請建議可用的xpath。

回答

0

找出選擇下拉選項的解決方案。

通過使用List方法,我選擇了該字段中可用的選項列表,並使用單擊列表的索引值進行選擇。

List<WebElement> Idtype = driver.findElements(By.xpath("//tr[2]/td[2][@class = 'z-comboitem-text']")); 
    Idtype.get(0).click(); 
0

您可以檢查此..,

By.xpath("//*[contains(text(),'NATIONAL IDENTITY DOCUMENT')]").click; 

By.xpath("//*[contains(text(),'ASYLUM SEEKER PERMIT DOCUMENT')]").click; 
+0

感謝您的回覆。我之前嘗試過,它不起作用。 – SAUMARS

+0

什麼是err消息。你有沒有提到任何隱含的等待? –

+0

上述xpath在firepath中甚至沒有突出顯示。 – SAUMARS

1

的文本不是跨度文本中,它是排在第二td標籤。您可以嘗試在您的代碼中進行如下所示的小改動。

By.xpath("//table/tbody/tr[2]/td[2]").click; 

By.xpath("//td[contains(text(),'NATIONAL IDENTITY DOCUMENT')]").click; 
+0

感謝您的回覆。我也試過這個。但它沒有奏效。 – SAUMARS

+0

但是,當我使用下面的1時,firepath被突出顯示。但不能在劇本中工作。 By.xpath(「// table/tbody/tr [2]/td [2] [@ class ='z-comboitem-text']」)。click; – SAUMARS

+0

你可以嘗試點擊圖片而不是文字。 By.xpath(「// table/tbody/tr [2]/td [@class ='z-comboitem-img']」)。click; – Murthi

0

嘗試使用下面的XPath匹配所需的選項:

By.xpath("//td[normalize-space()='ASYLUM SEEKER PERMIT DOCUMENT']").click; 

By.xpath("//td[.='ASYLUM SEEKER PERMIT DOCUMENT']").click; 

正如@Murthi說,文本節點不是子女span,b ut td。請注意,有some specifics in locating text nodes

+0

感謝您的回覆。我試過了,但沒有運氣。 – SAUMARS

+0

你能分享例外日誌嗎? – Andersson

+0

這是我得到的例外。 <<<無法單擊按鈕OBJ_IDType_DROPDOWN >>>等待元素可點擊20秒後超時:[[InternetExplorerDriver:WINDOWS上的Internet Explorer(b924b52b-0aee-4092-a430-2759ac4ec637)] - > xpath://table/tbody/tr [2]/td [2] [@ class ='z-comboitem-text']] Build info:'2.48.2',revision:'41bccdd',time:' 2015-10-09 19:55:52' 系統信息:host:'0967JNBPBB010L',ip:'192.168.56.1',os.name:'Windows 7',os.arch:'x86',os。版本:'6.1',java.version:'1.8.0_76-ea' 驅動程序信息:org.openqa.selenium.ie.InternetExplorerDriver – SAUMARS

0

這裏是回答你的問題:

要點擊ASYLUM SEEKER PERMIT DOCUMENT您可以使用以下xpath

By.xpath("//td[contains(.,'ASYLUM SEEKER PERMIT DOCUMENT') and not (@class='z-comboitem-spacer')]").click; 

讓我知道如果這個回答你的問題。

0

這個怎麼樣的XPath,

更新代碼

(//td[2])[1]//*[starts-with(@class,"z-com")]; // Selects ASYLUM.. 
(//td[2])[2]//*[starts-with(@class,"z-com")]; // Selects NATIONAL.. 

如果沒有在同一位置上有相同的類名這應該工作。

舊XPath的

driver.findelement(By.xpath("(//td[2])[1]")); // selects ASYLUM SEEKER PERMIT DOCUMENT 

driver.findelement(By.xpath("(//td[2])[2]")); // selects NATIONAL IDENTITY DOCUMENT 
+0

感謝您的回覆。由於該應用程序中有很多td [2]。即使我現在嘗試過,它沒有奏效。 – SAUMARS

相關問題