如何解决如何使用 Python Selenium 从 div 节点读取警报信息文本?
我正在尝试阅读选择下拉菜单后显示消息的网页。当消息出现时它有类
<div class="alert alert-info border-0 rounded-0"> No update currently available </div>
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import webdriverwait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
alert = webdriverwait(driver,5).until(EC.alert_is_present)
print(alert.text)
在使用 webdriver 等待时,我收到以下错误
__init__() takes 1 positional argument but 2 were given
我的目标是阅读警报类中的文本并进一步验证它。任何帮助将不胜感激。
解决方法
虽然 WebElement 的 class 属性包含值 alert
,但它仍然没有启用 JavaScript {{ 3}} 并且您必须将其作为常规 WebElement 处理。
要打印text No update currently available
,您可以使用以下任一Alert:
-
使用
css_selector
和get_attribute("innerHTML")
:print(driver.find_element_by_css_selector("div.alert.alert-info").get_attribute("innerHTML"))
-
使用
xpath
和 text 属性:print(driver.find_element_by_xpath("//div[contains(@class,'alert') and contains(@class,'alert-info')]").text)
理想情况下,您需要为 visibility_of_element_located()
引入 Locator Strategies,并且您可以使用以下任一 WebDriverWait:
-
使用
CSS_SELECTOR
和 text 属性:print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"div.alert.alert-info"))).text)
-
使用
XPATH
和get_attribute()
:print(WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//div[contains(@class,'alert-info')]"))).get_attribute("innerHTML"))
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
您可以在 Locator Strategies
中找到相关讨论参考文献
链接到有用的文档:
-
How to retrieve the text of a WebElement using Selenium - Python 方法
Gets the given attribute or property of the element.
-
get_attribute()
属性返回The text of the element.
text
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。