Python 如何从父元素具有属性style=”的元素中提取文本;显示:无“;使用硒
我想从此分区提取电话号码。此分区具有style=“display:none” 因此,我无法联系该部门的孩子。请帮我从该部门获取电话号码 我想我们需要改变这种显示方式:无;到可见性:可见。如何在Python Selenuim中实现这一点 编辑 我已经尝试了下面的代码,正如第一个答案中所建议的,但它抛出了以下错误:Python 如何从父元素具有属性style=”的元素中提取文本;显示:无“;使用硒,python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,我想从此分区提取电话号码。此分区具有style=“display:none” 因此,我无法联系该部门的孩子。请帮我从该部门获取电话号码 我想我们需要改变这种显示方式:无;到可见性:可见。如何在Python Selenuim中实现这一点 编辑 我已经尝试了下面的代码,正如第一个答案中所建议的,但它抛出了以下错误: email_div = browser.find_element_by_class_name("returnemail") email_div_contents = browser.ex
email_div = browser.find_element_by_class_name("returnemail")
email_div_contents = browser.execute_script('return arguments[0].innerHTML', email_div)
telephone = email_div_contents.find_element_by_class_name('reply-tel-number').get_attribute('textContent')
AttributeError:“str”对象没有属性
'按\u类\u名称查找\u元素\u
“根据文档执行脚本()返回: 命令的JSON响应加载到dictionary对象中 因此,当您试图调用dictionary对象上的
find\u element\u by\u class\u name()
email_div_contents.find_element_by_class_name('reply-tel-number').get_attribute('textContent')
出现以下错误:
AttributeError:“str”对象没有“按类名称查找元素”属性
要从所需元素中删除属性style=“display:none”,并提取电话号码,可以使用以下解决方案:
element = driver.find_element_by_xpath("//div[@class='returnemail js-only']")
driver.execute_script("arguments[0].removeAttribute('style')", element)
tel_number = element.find_element_by_xpath("./aside/ul//li//p[@class='reply-tel-number']").get_attribute("innerHTML")
您的代码的位置不正确:
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\u div\u contents
是一个字符串,表示email\u div
的HTML代码,而不是web元素,
不能对字符串调用find\u element\u by\u class\u name()
这就是为什么会出现错误:
“str”对象没有“按类名称查找元素”属性
始终可以调用get_attribute()
来获取可见和不可见元素的属性值
要获取不可见元素的文本内容,可以使用get\u属性('innerText')
实际上,element.text
调用element.get_属性('innerText')
内部,但是element.text
将尊重用户体验:如果用户无法从页面中看到元素,element.text
将返回用户看到的空字符串。(偶数element.get_属性('innerText')
返回非空字符串)
. 这通常意味着你需要的是半个小时的时间和当地的导师在一起,或是走一走,而不是堆积如山。既然你还没有写任何与问题相关的代码,你真的需要先备份并使用基本工具。您好,你应该在我的答案中添加注释,而不是用我发布的代码编辑问题,否则我无法知道!查看我的更新答案使用:email\u div\u contents=email\u div.get\u attribute('innerHTML')而不是browser.execute等element.get\u attribute()
处理可见和不可见元素,因此在某些情况下,无需修改CSS使元素可见即可更改页面的原始显示逻辑,这将改变页面布局,至少这不是推荐的方式。execute\u script()
不会返回字符串,而是返回加载到字典对象中的命令JSON响应。。因此,email\u div\u contents
永远不是字符串。有关详细信息,请参阅API文档。
phone_number = driver.find_element_by_css_selector("div.returnemail .reply-tel-number")
.get_attribute('innerText')
@property
text:
if ( element is visible ):
return element.get_attribute('innerText')
else:
return ''