查找递增的 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
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