2016-02-28 5 views
1

Я пытаюсь найти элемент на веб-странице, используя селен. когда я «правой кнопкой» на веб-элемент и проверю, я могу найти html-код в консоли. Однако, когда я копирую xpath одного и того же элемента из консоли и пытаюсь выполнить его в firepath, он говорит «Нет соответствующих узлов». Почему это так и как я могу это исправить?Поиск веб-элемента с использованием селена в python

Это HTML-код этого элемента.

<input id="mobile" type="text" onchange="javascript:dispLocMob(this); 
"onkeydown="javascript:dispLocMob(this); 
"onkeyup="javascript:dispLocMob(this);" value="" maxlength= 
"10" placeholder="Mobile Number" name="mobile"> 

И это то, что я делаю:

receiverMobileElement = browser.find_element_by_xpath('//*[@id="mobile"]') 

Пожалуйста, помогите.

+0

Речь идет о 'selenium', но о реальной проблеме в' firepath' поиске? Я не понимаю ... – Andersson

ответ

0

Зачем использовать xpath, когда вы можете найти элемент по уникальныйid?

from selenium import webdriver 

browser = webdriver.Firefox() 
browser.get('http://example.com') 

target_element = browser.find_element_by_id('mobile') 
+0

Спасибо за помощь. Более того, основная проблема была связана с расположением этого элемента внутри тега iframe. Сейчас он работает нормально. –

0

Я всегда говорю винт поджигатель, с помощью консоли Chrome ..

Судя по всему, лучший способ, чтобы получить этот конкретный элемент будет одним из следующих двух вариантов (при условии, что «идентификатор = мобильный»является уникальным) ..

By.cssSelector("#mobile"); 
By.xpath("//input[@id = 'mobile']"); 

Чтобы использовать хромированную консоль ->

  1. Start Chrome
  2. Щелкните правой кнопкой мыши и проверьте свой элемент.
  3. Вы должны увидеть html-код, и консоль появится под ним. (Если вы не видите консоль, щелкните три вертикальные точки и выберите «Показать консоль»
  4. Теперь, вы можете сделать некоторые потрясающие вещи! Вы можете искать элементы, которые вы пытаетесь идентифицировать, и посмотреть, можно найти, например, чтобы увидеть, если By.cssSelector ("# мобильный");. будет работать печатаю этот

document.querySelectorAll ("# мобильный")

для XPath, введите этот

$ xBy.xpath ("// input [@id = 'mobile']");

Просто предложение ... не заботьтесь о firebug, если ваш код работает, и серьезно пробуйте этот путь в хром!

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