Элемент найден в XPath Checker, но отсутствует в Selenium

У меня есть следующий XPath:

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

Когда я опробую этот XPath в XPath Checker (расширение Firefox), он все время работает идеально. Но когда я делаю следующее в Selenium:

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

Я схожу с ума, чтобы решить эту проблему. Кто-нибудь видит какую-либо ошибку в моей строке кода?

10.11.2009 20:36:06
Вы используете Selenium RC?
Ripon Al Wasim 5.09.2013 08:59:03
4 ОТВЕТА
РЕШЕНИЕ

Разве эта строка запроса не должна выглядеть так (согласно API Java)?

"xpath=//div[contains(@id, 'box')]/div/h4/small/a[contains(@href, 'google')]/@href"
4
10.11.2009 20:51:51
Selenium должен знать, что это локатор xpath, потому что он начинается с //. Я бы заподозрил /до финала@href
Dave Hunt 11.11.2009 08:48:54
Локаторы по умолчанию в Selenium seleniumhq.org/docs/04_selenese_commands.html#default-locators
Dave Hunt 11.11.2009 08:50:36

Согласно документу API , это должно быть

...getAttribute("xpath=//div[contains....
2
10.11.2009 20:51:08
Отлично! Большое спасибо ... Я думаю, я слишком много кофеина!
Legend 10.11.2009 20:56:42

В Selenium RC: необходимо упомянуть xpath как "xpath = // div [содержит (@id, 'box')] / div / h4 / small / a [содержит (@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
5.09.2013 09:50:33

Сначала вы должны написать xpath, например

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

Здесь WebDriver_Object_nameможет быть селен

1
23.07.2016 13:42:32