python - 无法使用 Python Selenium 打印文本?
问题描述
所以我想通过 XPath 从这个 HTML 中打印出“ou”。
<div class="syllable">ou</div>
这是我的代码:
elem = driver.find_elements_by_xpath('*my xpath*')
for my_elem in elem:
print(my_elem.text)
我.text
在这段代码中使用过,但它在运行时什么也没有打印出来。它应该正在打印ou
,但它什么也没打印。如果有人能告诉我我做错了什么,那就太好了。
解决方案
要打印文本 ou
,您可以使用以下任一定位器策略:
使用
css_selector
和get_attribute("innerHTML")
:print(driver.find_element_by_css_selector("div.syllable").get_attribute("innerHTML"))
使用
xpath
和文本属性:print(driver.find_element_by_xpath("//div[@class='syllable']").text)
理想情况下,您需要诱导WebDriverWait并且visibility_of_element_located()
您可以使用以下任一Locator Strategies:
使用
CSS_SELECTOR
和文本属性:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.syllable"))).text)
使用
XPATH
和get_attribute()
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='syllable']"))).get_attribute("innerHTML"))
控制台输出:
ou
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
参考
链接到有用的文档:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性返回The text of the element.
- 使用 Selenium 的 text 和 innerHTML 之间的区别
推荐阅读
- shell - 以递增和递减顺序分布数据
- vector - 在 Vec 中搜索匹配项
- wcf - 带有 Windows 身份验证的 IIS 中托管的 WCF netTcpBinding 抛出“该服务不允许您匿名登录”
- python - 使用 Nominatim 和 geodataframe 对英文地址进行反向地理编码全局点
- html - 角度提交按钮的问题
- python - Python - 在一定长度的文件中查找字符串,字符串必须是大写和数字
- php - how do i write the validation in the model in laravel?
- python - pyspark 中用于生成流数据帧操作的高阶函数?
- azure - ADF 中复制活动的限制带宽
- android-studio - 尝试通过在带有登录 API 的 android studio 中使用改造库和休息 API 来制作登录页面,但登录失败