2009-11-10 66 views
3

我有以下XPath:元素在XPath的檢查發現,而不是在硒

//div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/@href 

當我嘗試了這個XPath的XPath的檢查器(Firefox擴展),它完美的作品所有的時間。但是,當我這樣做的硒:

System.out.println(selenium.getAttribute("//div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/@href")); 

它不斷給我下面的日誌錯誤:

14:30:56.311 INFO - Got result: OK on session 5a1401d374a04779bbe6f7fe9a0b4536 
14:30:56.315 INFO - Command request: getAttribute[//div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/@href, ] on session 5a1401d374a04779bbe6f7fe9a0b4536 
14:30:56.372 INFO - Got result: ERROR: Element //div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/ not found on session 5a1401d374a04779bbe6f7fe9a0b4536 

我要瘋了,以解決這個問題。有沒有人看到我的代碼行中有任何錯誤?

+0

您是否在使用Selenium RC? – 2013-09-05 08:59:03

回答

4

難道不應該查詢字符串看起來像這樣(根據javadoc的API)?

"xpath=//div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/@href" 
+0

謝謝......修正了它...... – Legend 2009-11-10 20:58:48

+1

Selenium應該知道這是一個xpath定位器,因爲它以'//開頭'。我會懷疑'/'在Selenium http://seleniumhq.org/docs/04_selenese_commands.html#default-locators中的最後一個'@ href' – 2009-11-11 08:48:54

+0

之前 – 2009-11-11 08:50:36

2

按照API doc,它應該是

...getAttribute("xpath=//div[contains.... 
+0

完美!非常感謝...我想我的咖啡因太多了! – Legend 2009-11-10 20:56:42

1

在硒RC:它需要提及的xpath爲「的xpath = // DIV [含有(@id, '盒子')]/DIV/H4 /小/ A [含有(@href,「谷歌「)]/@ HREF」。所以你的情況,代碼如下:

selenium.getAttribute("xpath=//div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/@href"); 

硒的webdriver:代碼如下:

driver.findElement(By.xpath("//div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/@href")).getAttribute("The name of the attribute"); 
1

你應該寫的XPath第一 如

WebDriver_Object_name.findElement(By.xpath("...xpath...")).getAttribute("..Attri_name.."); 

這裏您的WebDriver_Object_name可能是硒