[英]Break For loop after element found
我在弹出窗口中搜索和选择特定用户。 但是,当用户被选中时,窗口会自动关闭,这会中断 for 循环并给我一个错误。 寻找一种在用户被选中后跳出 For 循环的方法。 任何帮助将不胜感激。
这是我的代码
table_id = driver.find_element_by_xpath("//table[@class='list']")
rows = table_id.find_elements(By.TAG_NAME, "tr")
for row in rows:
for col in row.find_elements(By.TAG_NAME, "th"):
if col.text.startswith("UserTest") :
col.click()
break
UserTest 选择后弹出窗口默认关闭。 尽管 For 循环仍在运行并尝试运行下一次迭代并引发错误
NoSuchWindowException: Message: no such window: window was already closed
您的break
当前所做的只是退出内部for
循环,而不是外部循环。
因此,您可以做的是将整个迭代代码包装在一个函数中,并使用return
退出整个函数。
# <-- snip -->
def loop(rows):
for row in rows:
for col in row.find_elements(By.TAG_NAME, "th"):
if col.text.startswith("UserTest"):
col.click()
return
# <-- snip -->
您的break
退出最近的loop
,并且还有一个父级。 最重要的是,无需使用循环按文本获取元素。 您可以使用下面的 xpath 单击带有UserTest文本的表头。
driver.find_element_by_xpath("//table[@class='list']//th[starts-with(.,'UserTest')]").click()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.