首页 > 解决方案 > 在 Python 中的 Selenium Webdriver 中的可重复类中按标题获取元素

问题描述

我想在 selenium python 中单击一个包含类和标题的元素。

网页包含没有任何 id 但具有唯一名称的可重复类。一旦它在页面中加载,我想检测并单击此标题“PaymateSolutions”。下面是html标签。我尝试了很多方法,但我最终遇到了错误。仅供参考,我不能按类使用 find 元素,因为它们不是唯一的。

<div class="MuiGrid-root MuiGrid-item" title="PaymateSolutions">
<p class="MuiTypography-root jss5152 MuiTypography-body1">PaymateSolutions</p>
</div>

我尝试使用 XPATH 根据标题获取驱动程序元素的几种方法

方法1:-

wait = WebDriverWait(driver, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH,"//class[@title='PaymateSolutions']")))

方法2:-

element2 = (WebDriverWait(driver, 30).until(
            EC.visibility_of_element_located((By.XPATH, "//p[@title='PaymateSolutions']")))

        )

方法3:-

element2 = (WebDriverWait(driver, 30).until(
            EC.visibility_of_element_located((By.XPATH, "//[@title='PaymateSolutions']")))

        )

有人可以在这里帮忙吗?

标签: pythonseleniumselenium-webdriver

解决方案


对于方法 1 -titlediv标签的属性。所以 Xpath 将如下所示:

//div[@title='PaymateSolutions']

对于方法 2 -p标签没有title属性。PaymateSolutions是标签text的。pXpath 应该是这样的:

//p[text()='PaymateSolutions']

对于方法 3 - Tag Namexpath 中没有。Xpath 将是:

//*[@title='PaymateSolutions']
Or
//div[@title='PaymateSolutions']

参考链接 - Link1 , Link2

我们可以Explicit waits像下面这样申请:

# Imports required for Explicit waits:
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

driver.get(url)

wait = WebDriverWait(driver,30)
payment_option = wait.until(EC.element_to_be_clickable((By.XPATH,"xpath for PaymateSolutions option")))
payment_option.click()

指向显式等待的链接 -链接


推荐阅读