Ваш код имеет неправильное место:
email_div = browser.find_element_by_class_name("returnemail")
email_div_contents = browser.execute_script('return arguments[0].innerHTML', email_div)
email_div_contents.find_element_by_class_name()
email_div_contents
- это строка, представляющая HTML-код email_div
, а не веб-элемента. Вы не можете вызвать find_element_by_class_name()
для строки,
Вот почему вы получили ошибку:
У объекта 'str' нет атрибута 'find_element_by_class_name'
Вы всегда можете вызвать get_attribute()
, чтобы получить атрибутзначение видимого и невидимого элемента.
Чтобы получить текстовое содержимое невидимого элемента, вы можете использовать get_attribute('innerText')
.
phone_number = driver.find_element_by_css_selector("div.returnemail .reply-tel-number")
.get_attribute('innerText')
На самом деле, element.text
вызовите element.get_attribute('innerText')
внутри, но element.text
будет учитывать опыт пользователя:Если пользователь не видит элемент со страницы, element.text
вернет пустую строку, как видит пользователь.(Четное element.get_attribute('innerText')
возвращает непустую строку)
@property
text:
if ( element is visible ):
return element.get_attribute('innerText')
else:
return ''