Selenium 代码等待 CSS 类可用并在 Python 中提取文本

Posted

技术标签:

【中文标题】Selenium 代码等待 CSS 类可用并在 Python 中提取文本【英文标题】:Selenium code to wait until CSS class is available and extract text in Python 【发布时间】:2015-05-24 13:41:10 【问题描述】:

我在这里查看了一些相关的问题,但没有一个问题涉及找到一个类,然后提取属于该类的文本。

我的目标是自动化进入一个查找电子邮件、名字和域名的网站的过程。到目前为止,我有代码可以自动输入名称和域,然后单击“搜索”,但我的问题是等待结果加载。我基本上希望我的代码等到 CSS 类“one”出现,然后提取与该类相关的文本,例如对于以下 sn-p:

<h3 class="one">Success</h3>

提取文本“Success”。

【问题讨论】:

【参考方案1】:

您需要explicitly wait 使元素可见

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
h3 = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "h3.one")))
print h3.text

【讨论】:

我收到此错误:文件“/Users/sinaastani/AskNorbert/finder.py”,第 18 行,在 h3 = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, “h3.one”)))文件“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/selenium-2.45.0-py3.4.egg/selenium/webdriver/support /wait.py",第 75 行,直到 raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: @ohbrobig 然后,该元素似乎不可见。 @ohbrobig 页面上有任何 iframe 吗?元素真的表示为&lt;h3 class="one"&gt;Success&lt;/h3&gt; 吗?谢谢。 页面上有iframe,但元素确实是这样表示的 @ohbrobig iframes 是您当前的问题。您需要切换到 iframe,然后等待一个元素:driver.switch_to.frame('frame_id_or_name')

以上是关于Selenium 代码等待 CSS 类可用并在 Python 中提取文本的主要内容,如果未能解决你的问题,请参考以下文章

Selenium 中特定类表的 CSS 选择器

selenium--隐式等待

Python+Selenium

提高selenium脚本的执行速度

将 CSS 动态加载到文档头部并在加载后等待

如何使用 selenium 和 css 获取属性值