2012-11-09 48 views
1

我目前正試圖在屏幕截圖中顯示下面顯示的突出顯示的行。 我已經看過w3schools並在此查看它,但似乎無法讓我的代碼正確..我的硒腳本不斷識別出元素。如何映射Selenium中的XPath?

xpath for highlighted line

目前,我做這樣的事情:

selenium.click("xpath=//table[@id='resultTable']/tbody/tr[@class='level3']/td[@id='resultTable_0_0_1_ob']/span/a[@class='linkOnly']");

我也試過這樣:

selenium.click("xpath=//table[@id='resultTable']/tbody[1]/tr[6]/td[2]/span[1]/a[1]");

這:

selenium.click("xpath=//table[@id='resultTable']/tbody/tr[6]/td[2]/span/a");

我是否正確,我只需要延遲?還是我這樣做完全錯了?


編輯:

這裏是代碼片段的要求。感謝指針,我沒有真正注意到有多個同名的類!嗯,但由於某種原因,我寫的其他兩個XPath不工作。

在這個代碼片段中,我擴展了表格,以便更好地瞭解表格的設置方式。再次,抱歉的圖像大小,但ctrl +向上滾動應放大圖片。

table expanded

+0

遺憾的屏幕抓取大小..你可以 ** CTRL +向上滾動**或** ctrl +'shift ='**放大.. 提前感謝您的任何幫助。 – qwer1234

+0

查看html我發現有多個節點,就我們從您的示例中可以看出,它不確定其​​他路徑是否包含相同的子節點。嘗試從

中向下張貼片段。你的XPath對我來說工作得很好。 – JWiley

+0

@JWiley 感謝您提及多個

節點。直到你提到它,我才注意到。 我編輯了我的發佈以包含擴展表。 – qwer1234

回答

1

我寧願使用CSS選擇器,因爲他們工作得更快(目前使用的webdriver + JAVA) 所以解決問題的方法是這樣的:

String cssSelector = "tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly']" 
    driver.findElement(By.cssSelector(cssSelector)).click(): 
    driver.manage.timeouts.implicitWait(3,TimeUnit.SECONDS); 

當你有ID ='resultTable_0_0_1_ob '我認爲這個ID應該有助於尋找頁面上的獨特元素。 爲您解決問題第二個辦法: 此外,如果框架,您的網站上實施支持jQuery的你可以伊斯利使用jQuery:

JavascriptExecutor js = (JavascriptExecutor) driver; 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append("var x = $("tr[class='level3']>td[id='resultTable_0_0_1_ob']>span>a[class='linkOnly'];"); 
     stringBuilder.append("x.click();"); 
     js.executeScript(stringBuilder.toString()); 

而且不要忘記,以驗證您的firepath的XPath,CSS選擇器( firebug擴展)在Firefox。 以下圖片提供: firepath

希望這可以幫助你。

+0

感謝您的幫助!不幸的是,我的web應用程序與firefox不兼容,但您的示例向我明確表達了您的觀點。再次感謝! – qwer1234

0

xpath = // table [@ id ='resultTable']/tbody/tr [@ class ='level3']/td [@ id ='resultTable_0_0_1_ob']/span/a [@ class ='linkOnly' ]

相應的CSS是CSS =#resultTable> TBODY> tr.level3>#resultTable_0_0_1_ob> SPAN> .linkOnly