2009-11-10 2 views
3

У меня есть следующие XPath:элемент найден в XPath Checker, но не в Selenium

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

Когда я попробовать этот XPath в XPath Checker (расширение 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? –

ответ

4

Не следует, что строка запроса выглядит следующим образом (в соответствии с JavaDoc API)?

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

Спасибо ... Это исправляет это ... – Legend

+1

Selenium должен знать, что это локатор xpath, потому что он начинается с '//'. Я бы заподозрил '/' перед окончательным '@ href' –

+0

Локаторы по умолчанию в Selenium http://seleniumhq.org/docs/04_selenese_commands.html#default-locators –

2

Согласно API doc, она должна быть

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

Отлично! Большое спасибо ... Наверное, я нахожусь на слишком большом количестве кофеина! – Legend

1

В Selenium RC: он должен упомянуть, как XPath «XPath = // ДИВ [содержит (@id, 'окно')]/дел/h4/маленький/а [содержит (@href,«Google «)]/@ HREF». Так что в вашем случае код, как показано ниже:

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

В Selenium 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 может быть селен

Смежные вопросы