带有wait-till元素的Python selenium问题是可点击的,带有javascript href的点击链接



我编写了从页面获取数据的脚本,并尝试改进两个功能。第一:我想把time.sleep(10)改成

select = WebDriverWait(driver, 30).until(ec.element_located_to_be_selected((By.NAME, 'capacityReport_length')))

但我得到了"is not clickable at point (438,86) because another element <div class="mods-content-all-aisles"> obscures it".

我也不能点击<a href = "setting min" href="javascript:void(0)">

有什么建议吗?

为了让一个元素可以直接点击,它不能被另一个元素遮挡。在浏览器中,模糊元素(通常是封装元素(接收点击事件,并可能将其传递给它下面的元素,也可能不传递给它。换句话说,您要点击的元素不可直接点击。

在这种情况下,元素<div class="mods-content-all-aisles">会阻止您直接单击要单击的元素。

您可以尝试找到模糊元素,然后单击某个位置的元素以获得您想要的行为。

也可能是您的等待条件不够。您可能想要(另外(使用element_to_be_clickable条件。

wait = WebDriverWait(driver, 10)
element = wait.until(ec.element_to_be_clickable((By.ID, 'someid')))

或者,您可以尝试以下一些想法:

使用javascript触发点击:

driver.execute_script("arguments[0].click();", my_element)

您也可以尝试使用javascript从坐标中检索元素,然后单击它:

coords = (438, 86)
driver.execute_script("document.elementFromPoint(arguments[0], arguments[1]).click()", *coords)

你也可以尝试删除遮挡你想点击的元素的元素,但如果它嵌套在里面,那么最终可能会删除你想要点击的元素

最终,如果没有您正在使用的页面的全部内容(包括HTML和JS资源(,将很难给出明确的答案。但希望本指南能帮助您找到这个特定网页的解决方案。

最新更新