为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

湖上湖 2023-03-22 17:20:39
我可能有一个嵌套元素<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 tagsHTML 快照:我在 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?
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

它是一个<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 WebDriverWait

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC


查看完整回答
反对 回复 2023-03-22
  • 1 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号