繁体   English   中英

Python和Selenium:Deselectall()不起作用-StaleElementReferenceException

[英]Python and Selenium: Deselectall() not working - StaleElementReferenceException

我试图从具有多个=“ multiple”的Select中取消选择所有值,但失败,错误为StaleElementReferenceException。 我发现这是由于在选择菜单中取消选择第一个值后DOM发生了变化。 但是,即使我将find元素放入循环中并尝试自行取消选择每个值,也会遇到相同的错误。

for valueToDeselect in val_list:
    elem1 = Select(browser.find_element_by_id("dummyId1"))
    elem1.deselect_by_value(valueToDeselect)

这将返回错误: StaleElementReferenceException: Element is no longer attached to the DOM我找不到它,为什么它引发错误,即使我在循环内找到该元素也是如此。

任何帮助深表感谢。

EDIT1

我试图捕获异常,然后按照Gaurang Shah的评论中的建议再次尝试:

for valueToDeselect in val_list:
    while True:
        print("trying")
        elem1 = Select(browser.find_element_by_id("dummyId1"))
        elem1.deselect_by_value(valueToDeselect)
        break
    except:
        continue

这也不起作用,它陷入了循环,一直打印“ trying”。

EDIT2

选择的代码如下所示:

<select size="10" name="ErrorCodes" multiple="multiple"
onchange="javascript:setTimeout('__doPostBack(\'ErrorCodes\',\'\')', 0)"
id="dummyId1" title="DummyTitle1" style="width:99%;">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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