python - 如何使用 Selenium 从父元素具有属性 style="display:none" 的元素中提取文本
问题描述
我想从此 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”
'
解决方案
根据文档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")
推荐阅读
- html - 如何将图像设置为背景
- go - 如何知道为什么在 go.mod 中设置了特定的包版本?
- c++ - Gstreamer-1.0 错误(没有这样的文件或目录)
- ios - Swift 在 UITableViewCell 中以正确的方式使用 UISlider?
- google-cloud-dataflow - 结束对用 Python2 编写的数据流管道的支持
- javascript - setState in useEffect 以状态为条件
- javascript - 有没有办法将数值设置为等于不同的数值?
- sql-server - 使用 SUM 检索 2 个表中的记录并获取最新记录
- visual-studio-code - Visual Studio Code Powershell 启动失败
- android - 使用 Retrofit 中的另一个列表更新 Room 中的对象列表