首页 > 解决方案 > 如何使用 Selenium 从父元素具有属性 style="display:none" 的元素中提取文本

问题描述

这张图片显示了我的 Html 源代码

我想从此 div 中提取电话号码。这个 div 有 style="display:none" 所以我不能访问这个 div 的孩子。请帮助我从 div 获取电话号码。

我想我们需要改变那个显示:无;可见性:可见。我如何在 Python Selenuim 中做到这一点

编辑

我已经按照第一个答案中的建议尝试了下面的代码,但它会引发以下错误:

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”对象没有属性“find_element_by_class_name”

'

标签: pythonseleniumselenium-webdriver

解决方案


根据文档execute_script()返回:

命令的 JSON 响应加载到字典对象中。

因此,当您尝试调用字典对象find_element_by_class_name()上的方法时,如下所示:

email_div_contents.find_element_by_class_name('reply-tel-number').get_attribute('textContent')

引发以下错误:

AttributeError:“str”对象没有属性“find_element_by_class_name”


要从所需元素中删除属性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")

推荐阅读