номера телефона это элемент я должен получить внутренний текстполучить текстовое значение узла() с селеном + питоном
<a href="tel:895**49****" class="button-text action-link" title="Телефон продавца" rel="nofollow">
"8 9** **9-99-**"
</a>
, когда я использую
phone = driver.find_element_by_class_name('button-text')
print phone.text
возвращает пустую строку, так как номер телефона в "" это текст() узел
и когда я пытаюсь это
print driver.find_element_by_xpath('/html/body/section/article/section[2]/ul/li[1]/a/text()')
или это
print driver.find_element_by_xpath('/html/body/section/article/section[2]/ul/li[1]/a/text()').text
возвращает ошибку InvalidSelectorException: Сообщение: u'Error Сообщение => \ 'Результат выражения XPath «/ HTML/тело/раздел/статьи/раздел [2]/мкл/li [1]/a/text() "is: [объект Текст]. Это должен быть элемент.
Нету, он возвращает пустую строку, тоже, как ** driver.find_element_by_class_name («кнопка-текст»). Текст ** я думаю, потому что номер телефона это текстовый узел, а не внутренний текст ** а ** –
Хм, я использую java (не python), но если вы получаете пустую строку, вы можете попробовать вызвать метод getAttribute на объекте WebElement - что-то вроде этого в java: 'driver.findElement (By.xpath ()). GetAttribute ("innerHTML") '; –
Danix
ну, он должен работать, но он не работает, потому что этот сайт генерирует номер телефона неизвестным методом и помещает его в новый текстовый узел! и ** get_attribute ('innerHTML') ** возвращает предыдущее значение на этой кнопке - «Показать номер». я должен нажать на эту кнопку, подождать 2 секунды и получить новый внутренний текст (номер телефона, который появляется после нажатия). Я делаю это manupulation правильно, и он отлично работает. ** driver.find_element_by_xpath ('/ HTML/тело/раздел/статьи/раздела [2]/мкл/Li [1]/а').текст ** также работает и возвращает строгий текст, но пока я не щелкнул. Я думаю, что это было сделано для защиты номеров телефонов, и мне нужно их очистить. –