python - Python Selenium:如何从 iframe 中的元素中提取文本?
问题描述
情况
我需要从 iframe 内的 div 元素中提取一些文本。我有切换到 iframe 的代码,但我无法从 div 元素中获取文本。
编码
from selenium import webdriver
import pandas as pd
from selenium.webdriver.support.ui import WebDriverWait
timeout = 100
import sys
from bs4 import BeautifulSoup
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://dealers.carwow.co.uk/dealers/sign_in')
username = driver.find_element_by_id("dealer_email")
password = driver.find_element_by_id("dealer_password")
username.send_keys("email")
password.send_keys("password")
driver.find_element_by_name("commit").click()
driver.find_element_by_link_text("""View Report""").click()
try:
driver.implicitly_wait(50)
iframe = driver.find_element_by_css_selector('iframe')
driver.switch_to.frame(iframe)
table = driver.find_element_by_id('173d5612')
table_text = table.get_attribute('innerHTML').text
print(table_text)
except Exception as e:
print(e)
driver.close()
sys.exit(0)
问题
目前它因错误而失败:“str”对象没有属性“text”到目前为止我的代码是这样的:
iframe 内的根树
问题
我需要得到上面红色圆圈内的文字。我怎样才能做到这一点?为什么我会收到此错误?
解决方案
提取文本:
切换到 iframe 后,您可以简单地使用 xpath 访问文本元素,如下所示
driver.find_element_by_xpath("//div[@id='layout-grid']/table[@class='layout-grid']/div[@class='label-inner']").text
错误
您收到的错误是因为方法
.get_attribute('innerHTML')
返回一个字符串,而不是一个对象,并且Python 字符串没有
.text
selenium 对象具有的属性。
推荐阅读
- node.js - 不支持 nodejs 10.x 运行时的 Sam 构建失败
- node.js - 未处理的拒绝事件与 bugsnag 冲突
- java - 如何将 2 列复选框添加到 Jpanel
- sql-server - 无法恢复 mssql 数据库,因为 .mdf 文件丢失
- c# - 如何在 Microsoft graph Api 中使用 IN 子句
- azure-devops - OpenQA.Selenium.WebDriverException:未知错误:找不到 Chrome 二进制文件
- c# - Moq.Dapper QueryAsync 不适用于模拟交易对象
- java - 如何向所有人开放端点?
- javascript - Angular7组件视图在数据操作上崩溃
- javascript - 使元素变宽,然后在达到某个点时变窄