2015-11-19 2 views
0

Я пытаюсь нажать «создать учетную запись» для gmail, используя xpath.Найти элемент с помощью XPath

<span id="link-signup"> 
<a href="https://accounts.google.com/SignUp?service=mail&amp;continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&amp;ltmpl=default"> 
    Create account 
    </a> 
    </span> 

Мой код в Python:

elem=driver.find_element_by_xpath("//*[@span='link-signup']").click() 

Я не уверен, что ошибка. Я знаю, как щелкнуть ссылку по id, но я хочу узнать, как это сделать с помощью xpath для будущих целей.

+0

попытайтесь найти «Создать учетную запись», как описано здесь: https://stackoverflow.com/questions/18655765/xpath-find-html-element-by-plain-text –

+1

Вы пытались '.// span [ @ id = "link-signup"] '? –

+0

Поиск тега, содержащего «Создать учетную запись», должен работать следующим образом: '// a [содержит (текст(), 'Создать учетную запись')]' –

ответ

1

Попробуйте использовать:
'.//' выбирает дочерний узел с тегом span и квадратные скобки используются, чтобы выбрать его с помощью атрибута id т.е..

elem=driver.find_element_by_xpath('.//span[@id="link-signup"]').click() 
0

попробовать с following-sibling:

driver.find_element_by_xpath("//span[@id='link-signup']/following-sibling::a").click() 
0

Вот несколько примеров XPaths, чтобы получить «Создать аккаунт»:

//Returns an a element with the exact text 'Create account' 
//a[.='Create account'] 

//Returns an 'a' element that is the child of a span element with the id 'link-signup' 
//span[@id='link-signup']/a 

XPath приведены в вашем вопросе //*[@span='link-signup'] не является действительным XPath, поскольку @span='link-signup' предикат пытается найти элемент, который имеет диапазон атрибут, равный 'link-signup', тогда как HTML, указанный в вашем вопросе, имеет элемент span с атрибутом id qual to 'link-signup'.

Кроме того, XPath, указанный в вашем вопросе, не пытается вернуть элемент a, содержащий ссылку, которую вы хотите щелкнуть.

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