用于查找递增创建多个事务的xpath元素/定位器的方法

2024-09-30 02:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

机器人框架

你好

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

场景1:在第一次运行时,这是元素的值

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

情景2: 在第二次运行时(重复测试),这就是元素的值

滑过xpath://body/div[4] /div[1]/div[2]/form[1]/div[1]/div[1]/div[9]/div[1]/div[1]/div[1]/div[1]/ul[1]/li[2]/div[1]/img[1]`

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

问题: 如果元素/定位器发生变化或增加,是否有一种方法或条件可以进行测试步骤?这样我就可以连续运行重复测试了

谢谢你帮我解决问题


Tags: divform脚本框架元素img场景机器人
1条回答
网友
1楼 · 发布于 2024-09-30 02:30:12

您可以简单地使用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

相关问题 更多 >

    热门问题