【问题标题】:"ElementNotInteractableException" on trying to click elements inside of previously hidden div, selenium python“ElementNotInteractableException”尝试单击以前隐藏的 div、selenium python 中的元素
【发布时间】:2017-11-27 14:02:31
【问题描述】:

我正在用 selenium 驱动程序和 python 编写一个测试用例,

单击按钮后,当前可见的一个 div(单击的按钮的内容)被隐藏,而之前隐藏的其他 div 可见,其中包含一些需要单击以继续流程的按钮

selenium 检测到第二个 div 和其中的元素可见,但是当我尝试单击按钮时,会引发异常

在第二个 div 里面也是一个包含一些复选框的表格,我什至可以打印复选框元素但不能点击它

# Espera hasta que se encuentre visible el panel para selecciona sucursales visibles
        try:
            sucursalsTable = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID , 'sucursals-table')))
        except TimeoutException:
            print "Error al intentar seleccionar sucursales visibles"


        tbody = sucursalsTable.find_element_by_tag_name("tbody")
        rows = tbody.find_elements_by_tag_name("tr")  


        for row in rows:
            cells = row.find_elements_by_tag_name("td")
            checbox = cells[0].find_element_by_xpath("(//input[@type='checkbox'])") # la primera columna
            print checbox
            checbox.click()
            pass

运行后

Pyhon Code

HTML

Html Code

id="Sucursals-panel" 是第二个div

当我尝试单击第二个 div 内的按钮时,会引发相同的异常

如果有人能帮我解决这个问题,我将不胜感激

【问题讨论】:

标签: python selenium


【解决方案1】:

我遇到了类似的问题。 此按钮一直隐藏,直到表单出现问题。 所以我伪造了一个问题,我可以在视觉上和页面代码中找到按钮。 但是当我尝试点击它时,使用以下代码:

driver.find_element_by_class_name('btn_ok_alert').click()

我得到了 Element Not Interactable 异常... 扫了半天页面代码,发现是两个同名的按钮,第一个还是隐藏的。

我找到的解决方案是使用多元素搜索方法,该方法为您提供处理它的索引:

elem = driver.find_elements_by_class_name('btn_ok_alert')
elem[1].click()

发生这种情况是因为驱动程序的搜索从页面顶部开始,并且会首先找到仍然隐藏(用于其他目的)的按钮。 如果我打算点击第一个,那就是:

elem[0].click()

【讨论】:

    猜你喜欢
    • 2020-01-29
    • 2019-08-09
    • 2016-01-07
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-02-07
    • 2012-08-15
    相关资源
    最近更新 更多