猿问

如何使用 Selenium 和 Python 识别嵌套元素

我可能有一个嵌套元素<svg>,我似乎无法访问


我尝试使用


driver.find_element(By.CSS_SELECTOR, 'button.login-fake-btn')


driver.find_element(By.CSS_SELECTOR, 'login-fake-btn')

和其他一些人。


嵌套 svg 的 HTML 结构:


<svg class="1">

<div id="2">

<div>

<div class="3">

<div class="4">

<li>

<button class="5" type="button" id="login-fake-btn">

...closing tags

HTML 快照:

我在 xpath 上也没有成功。

错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"button.login-fake-btn"}

如何使用 css 选择器(或 xpath,但我认为 css 更好)获得嵌套的 svg?


湖上湖
浏览 119回答 1
1回答

慕森王

它是一个<button>元素,它在<svg>标签之外,并且可能会向前移动,您会调用click()它。因此,要定位您必须为引入WebDriverWait 的元素element_to_be_clickable(),您可以使用以下任一定位器策略:使用CSS_SELECTOR:element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.login-btn.btn-shadow#login-fake-btn[data-testid='login-fake-btn']")))使用XPATH:element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='login-btn btn-shadow' and @id='login-fake-btn'][@data-testid='login-fake-btn']")))注意:您必须添加以下导入:from selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support import expected_conditions as EC
随时随地看视频慕课网APP

相关分类

Python
我要回答