元素不可单击,因为另一个元素遮挡了i

2024-05-13 17:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

功能:

def twoclicks(idoutter,idinner):
    wait = WebDriverWait(driver, 20)
    wait.until(EC.element_to_be_clickable((By.XPATH, "//input[contains(@id," + idoutter + ") and @value='...']"))).click()
    sleep(5)
    wait.until(EC.element_to_be_clickable((By.ID, idinner))).click()

此函数用于单击一个元素,然后在几秒钟后弹出一个窗口,然后单击弹出窗口中的某个元素。在

尽管我尝试在函数中添加sleep(),但它不一致,因为我有时会得到它,而在其他时候我没有。在

我以前的职责是:

^{pr2}$

虽然我的第二个功能是一个不好的实践和第一个应该是一个改进,但我没有得到例外使用我的第二个一,怎么了我可以调整我的第一个共享函数来消除这个错误吗。在

请注意,代码是对类似函数的连续调用,例如:

twoclicks("'button1'", 'button2')
twoclicks("'button3'", 'button4')

div模糊了它是:

<div class="rich-mpnl-mask-div-opaque rich-mpnl-mask-div" id="PWBFormID:managerModalPanelDiv" style="z-index: -1;"><button class="rich-mpnl-button" id="PWBFormID:managerModalPanelFirstHref"></button></div>

在html中是灰色的(检查时)。在

如果不使用这些方法,我就无法单独使用一个类来编写一个与之共享的类twoclicks()函数非常困难。在


Tags: to函数功能dividbuttonelementuntil
1条回答
网友
1楼 · 发布于 2024-05-13 17:35:47

您可以尝试等待Javascript完成。尝试以下等待方法:

def waitforload():
    wait.until(lambda d: d.execute_script(
        'return (document.readyState == "complete" || document.readyState == "interactive")'))


def twoclicks(idoutter, idinner):
    wait.until(EC.element_to_be_clickable((By.XPATH, "//input[contains(@id," + idoutter + ") and @value='...']"))).click()
    waitforload()
    wait.until(EC.element_to_be_clickable((By.ID, idinner))).click()
    waitforload()

相关问题 更多 >