2016-11-01 99 views
0

我想定義一個By元素xpath,使用之前定義的By元素。如何定義按元素xpath使用另一個元素使用Selenium WebDriver

實施例: 我有以下通過元件限定:

private By firstExpander = By.xpath("//div[@id = 'language-expander']"); 

現在我想要定義另一個通過元件,這是在該元件的DOM結構的孩子,例如該名稱'語言的擴展」。我曾嘗試以下方法:

private By firstExpanderName = By.xpath(firstExpander.toString() + "/div[1]/a"); 

但它包含結果字符串中父項的「By.xpath」部分。我相信我做錯了。有關如何正確執行此操作的任何建議?

+0

您應該添加的編程語言和框架,您使用,使您的問題更具體的避免解決方案是正確的標籤,但並不適用於你的具體情況 – Andersson

回答

0

試試這個,

String div = "//div[@id = 'language-expander']"; 
private By firstExpander = By.xpath(div); 
private By firstExpanderName = By.xpath(div + "/div[1]/a"); 
0

指定父XPath字符串給一個變量。稍後,您可以附加任何字符串來派生子xpath。

0

請您嘗試一下這種方式 -

private By firstExpanderName = firstExpander.findElement(By.xpath(".//div[1]/a")) 
0
WebElement wb1 = driver.findElement(By.xpath("")); 
WebElement wb2 = wb1.findElement(By.xpath("")); 
wb2.[YourAction] 
+0

Hi Hemant;你的代碼可能是正確的,但是在某些情況下,它會作出更好的回答;例如,您可以解釋如何以及爲什麼這個提議的變更可以解決提問者的問題,或許還包括指向相關文檔的鏈接。這將使它對他們更有用,而且對尋求類似問題解決方案的其他網站讀者也更有用。 –

+0

這裏我們試圖找到父對象上的那些對象的子對象,因此在上面的解釋中,wb1將是父對象,而wb2應該是子對象,如果期望子對象是子對象,則可能需要使用wb2作爲列表超過一個。謝謝。 –

相關問題