查找递增的 xpath element/locator 的方法 - 创建多个事务

Method for finding the xpath element/locator that increments - creating multiple transactions

Robotframework-Selenium-PYTHON

美好的一天!

问题: 我正要创建一个用于生成多个事务的脚本,但问题是每次测试重复时,都会有一个元素递增,但我无法找到该元素

场景一:第一个运行,这是元素的值

鼠标悬停在 xpath://b ody/div[4]/div[1]/div[2]/表格[1]/div[1]/div[1]/ div[1]/div[9]/div[1]/div[1]/div[1]/div [1]/div[1]/ul[1]/li[1]/div[1]/img[1]

场景二: 在第二个 运行(重复测试)这是现在元素的值

鼠标悬停在 xpath://body/div[4]/div[1]/div[2]/form[1]/div[ 1]/div[1]/div[1]/div[9]/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div [1]/img[1]`

如您所见,第一个场景中的标签 li[1] 在第二个场景中变为 li[2]

问题: 如果 element/locator 发生变化或增加,是否有一种方法或条件可以让我们进行测试?这样我就可以 运行 连续进行重复测试

感谢您帮助我解决问题

您可以简单地使用 while 循环结合 f-strings 来实现这一点。以下是您的操作方法:

from selenium.common.exceptions import NoSuchElementException

xpath_num = 1
while True:
    try:
        element = driver.find_element_by_xpath(f'//body/div[4]/div[1]/div[2]/form[1]/div[1]/div[1]/div[1]/div[9]/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[{xpath_num}]/div[1]/img[1]')
        xpath_num += 1
    except NoSuchElementException:
        break #Breaks when element is not found

编辑:

要在 mouseover 方法上实现相同的方法,试试这个:

from selenium.webdriver.common.action_chains import ActionChains

xpath_num = 1
while True:
    try:
        element = driver.find_element_by_xpath(f'//body/div[4]/div[1]/div[2]/form[1]/div[1]/div[1]/div[1]/div[9]/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[{xpath_num}]/div[1]/img[1]')
        xpath_num += 1
        hover = ActionChains(driver).move_to_element(element)
        hover.perform()

    except NoSuchElementException:
        break #Breaks when element is not found