【发布时间】:2022-01-05 16:20:19
【问题描述】:
【问题讨论】:
标签: python selenium selenium-chromedriver pseudo-element
【问题讨论】:
标签: python selenium selenium-chromedriver pseudo-element
文本 i 位于 ::before 和 ::after pseudoelements 之间。因此,要提取文本,您可以使用以下任一Locator Strategies:
使用css_selector:
print(driver.find_element(By.CSS_SELECTOR, "div.kbkey.button.red").text)
使用xpath:
print(driver.find_element(By.XPATH, "//div[@class='kbkey button red']").text)
理想情况下,您需要为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies:
使用CSS-SELECTOR:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.kbkey.button.red"))).text)
使用XPATH:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='kbkey button red']"))).text)
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您可以在How to retrieve the text of a WebElement using Selenium - Python找到相关讨论
链接到有用的文档:
【讨论】:
::before 和 ::after 只是一个伪元素。
在这里,您可以从 div 元素本身中提取文本。
如果有多个 divs 类 kbkey button red 你可以这样做:
buttons = driver.find_elements_by_css_selector("div.kbkey.button.red")
for button in buttons:
print(button.text)
【讨论】: