如何使用 Selenium 和 Python 定位元素并提取 innerText
How to locate the element and extract the innerText using Selenium and Python
<span class="chr-UserDropdownItem-imageAndText">
<img class="chr-UserDropdownItem-image" src="/slm/profile/image/264023573852/24.sp?version=1" alt="User Profile Avatar">
<span class="smb-DropdownItem-text">
<span> test user </span>
</span>
</span>
通过查看上面的屏幕截图,请帮我从 span 标签 中唯一地提取 innerText
测试用户 。
您可以使用 xpath 找到元素:
driver.find_element_by_xpath("//span[@class='smb-DropdownItem-text']//span[contains(text(),'test user')]");
要提取文本 test user,您必须为 visibility_of_element_located()
引入 WebDriverWait,您可以使用以下 :
使用 CSS_SELECTOR
和 get_attribute()
:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.smb-DropdownItem-text>span"))).get_attribute("innerHTML"))
使用 XPATH
和 text 属性:
print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "span[@class='smb-DropdownItem-text']>span"))).text)
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您可以像这样使用 XPath 来删除白色-space:
driver.find_element_by_xpath('//span/text()[normalize-space()="test user"]')
如果 span 标签中没有 white-space,请这样使用 XPath:
driver.find_element_by_xpath('//span[contains(text(), "test user")]')
对于动态:
driver.find_element_by_xpath('//span[contains(text(), "' . $HereIsSetYourDynamicallyVaribleName . '")]')
你可以试试下面的xpath。
//img[contains(@src, '/profile/image/')]]/following-sibling::span
<span class="chr-UserDropdownItem-imageAndText">
<img class="chr-UserDropdownItem-image" src="/slm/profile/image/264023573852/24.sp?version=1" alt="User Profile Avatar">
<span class="smb-DropdownItem-text">
<span> test user </span>
</span>
</span>
通过查看上面的屏幕截图,请帮我从 span 标签 中唯一地提取 innerText
测试用户 。
您可以使用 xpath 找到元素:
driver.find_element_by_xpath("//span[@class='smb-DropdownItem-text']//span[contains(text(),'test user')]");
要提取文本 test user,您必须为 visibility_of_element_located()
引入 WebDriverWait,您可以使用以下
使用
CSS_SELECTOR
和get_attribute()
:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span.smb-DropdownItem-text>span"))).get_attribute("innerHTML"))
使用
XPATH
和 text 属性:print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "span[@class='smb-DropdownItem-text']>span"))).text)
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
您可以像这样使用 XPath 来删除白色-space:
driver.find_element_by_xpath('//span/text()[normalize-space()="test user"]')
如果 span 标签中没有 white-space,请这样使用 XPath:
driver.find_element_by_xpath('//span[contains(text(), "test user")]')
对于动态:
driver.find_element_by_xpath('//span[contains(text(), "' . $HereIsSetYourDynamicallyVaribleName . '")]')
你可以试试下面的xpath。
//img[contains(@src, '/profile/image/')]]/following-sibling::span