2013-08-06 58 views
0

例如,我有一個部件1,我可以找到我發現後element2的,就像這樣:硒findElement在另一findElement

driver.findElement(By.xpath("//xpath2")).findElement(By.xpath("//xpath1")).click(); 

我想用PageObjectModel和註釋@FindBy,像這樣的:

@FindBy(xpath = "//xpath1") 
private WebElement element1; 

@FindBy(xpath = "//xpath2") 
private WebElement element2; 

的問題:我不知道該如何重寫代碼,這不起作用:

element2.element1.click(); 
+0

你試圖通過從元件1時的相對XPath查找元素2?很難說,因爲這兩個xpath看起來都是絕對路徑。 –

回答

0
@FindBy(xpath = ".//xpath1") 
private WebElement element1; 

@FindBy(xpath = ".//xpath2//xpath1") 
private WebElement element2; 

使用

element2.click(); 
0

好,Y你有幾個解決方案。

首先,如果你想使用2個FindBys是:

@FindBys({@FindBy(xpath = "//xpath2"), 
     @FindBy(xpath = "//xpath1")}) 

二是把第二個XPath代碼中明確findElement功能

element1.findElement(By.xpath("//xpath1")).click(); 

最後,你也許可以結合第一個xpath和第二個到單個xpath中

@FindBy(xpath="//xpath2//xpath1") 

但是,我想喲你可能會問這是因爲你有一個單獨的元素,你喜歡在其中找到很多其他元素。不幸的是,這是不可能的嚴格@FindBy。

+1

您正在嘗試將css選擇器和xpath結合使用:P這不起作用 – cegprakash

+0

啊,感謝您輸入錯誤。 –