我正在搜索并在弹出窗口中选择特定用户。然而,当选择了用户时,窗口会自动关闭,并且打破了循环,并给我一个错误。寻找一种在选择用户后突破两个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
答案 0 :(得分:4)
您的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 -->
答案 1 :(得分:2)
您的break
离开最近的loop
,还有一个父母。最重要的是,无需使用循环即可按文本获取元素。您可以使用下面的xpath单击带有 UserTest 文本的表标题。
driver.find_element_by_xpath("//table[@class='list']//th[starts-with(.,'UserTest')]").click()