【问题标题】:How to get updated DOM after using checkboxes?使用复选框后如何获取更新的 DOM?
【发布时间】:2021-06-03 16:36:28
【问题描述】:

我知道询问的标题很模糊。但是让我们检查一下这个页面: https://www.cleaneye.go.kr/user/gongsiCompare.do

所以这是韩国的公共数据页面之一,其中包含我在研究中需要的数据。 如您所见,它在 ul 中有一些复选框,如果您选中左侧的其中一个框,则会出现其右侧的复选框列表。

所以我编写了一个代码来检查每个组合,我会告诉你导致问题的那个。

from selenium import webdriver
driver = webdriver.Chrome(CHROMEDRIVER_LOCATION)
driver.get('https://www.cleaneye.go.kr/user/gongsiCompare.do')

in_type = driver.find_elements_by_xpath("//div[@id='divPcomp']/ul/li")
for in_t in in_type:
    in_t.find_element_by_xpath("./label/input").click()

    region_type = driver.find_elements_by_xpath("//div[@id='divSido']/ul/li")
    for r_t in region_type:
        r_t.find_element_by_xpath("./label/input").click()

问题是,当代码执行时

r_t.find_element_by_xpath("./label/input").click()

它给出了 ElementNotInteractableException 错误,可能是因为 DOM 在单击中的复选框后没有修改

in_t.find_element_by_xpath("./label/input").click()

所以我搜索了如何解决这个问题,大多数答案都是关于使用隐式/显式等待。在我这样做之前,我将 time.wait(30) 放在 click() 之间,但它仍然没有用。所以等待可能不是解决这个问题的办法。

如您所见,如果您刷新它,整个页面将被重置,所以......这也不是这个问题的答案。

有什么好的解决方法,或者有什么解决方法,请赐教。 否则,我就用鼠标点击和键盘输入'tab'哈哈...

感谢您关注这个问题!

【问题讨论】:

    标签: javascript python python-3.x selenium dom


    【解决方案1】:

    您的定位器不是唯一的,它会找到在屏幕上不可见的元素使用:

    region_type = driver.find_elements_by_xpath("//div[@id='divSido']/ul/li[@class='rowon']")
    

    【讨论】:

    • 哦对了。存在不可处理的排行元素!射击,笨拙的我。感谢您发痒的抓挠答案PDHide!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多