我想知道如何创建一个循环来查找多个场景,并根据找到的场景执行不同的操作,要么是场景1并执行某些操作,要么是场景2并执行其他操作。
让我解释一下,我需要这个循环来做这样的事情:
1/点击下拉菜单,下拉菜单为:btn选项= WebDriverWait(驱动程序,1000).until(错误代码.元素可单击((通过.XPATH,“/html/body/div....”)).单击()
2/搜索元素(1和2)的存在。
3/如果找到元素1,则执行一些操作并从开始处重新启动循环。第一个元素:(通过.XPATH,“//[文本()=”我的文本1“]”)
4/如果找到元素2,则执行一些操作并从开始处重新启动循环。第二个元素:(通过.XPATH,“//[文本()=”我的文本2 ']”)
我尝试了几个代码,但每次程序停止,因为他发现一个元素,并给予一个错误,因为它没有找到其他元素。第一个是这个:
while True:
try:
btnOptions = WebDriverWait(driver, 1000).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div...."))).click()
btnTrash = WebDriverWait(driver, 1000).until(EC.element_to_be_clickable((By.XPATH, "//*[text()='My text1']"))).click()
btn_move = WebDriverWait(driver, 1000).until(EC.presence_of_element_located((By.XPATH,
"/html/body/...."))).click()
time.sleep(2)
except NoSuchElementException:
break
这是我的第一个代码,它适用于第一个场景,有时出现新的场景,这个场景会过时并生成错误,然后程序停止
我试过这个:
while True:
try:
btnOptions = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "/html/body/..."))).click()
firstElement = WebDriverWait(driver, 10).until(driver.find_elements(By.XPATH, "//*[text()='My text1']"))
if not firstElement:
btnTrash = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//*[text()='My text2']"))).click()
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH,
"/html/body/...."))).click()
else:
firstElement.click()
except NoSuchElementException:
break
这是行不通的。
我也试过这个:
while True:
try:
btnOptions = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div/...."))).click()
WebDriverWait(driver, 20).until(driver.find_element(By.XPATH("//*[text()='My text1']"))).click() or WebDriverWait(driver, 20).until(driver.find_element(By.XPATH("//*[text()='My text2']"))).click()
except NoSuchElementException:
break
一定有什么简单的事情可以做,但是我做不到,无论我怎么努力都不起作用
1条答案
按热度按时间ccgok5k51#
您可以在另一个语句中使用另一个try except语句: