繁体   English   中英

找到元素后中断 For 循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM