web-dev-qa-db-ja.com

pythonで別の要素が要素を覆い隠しているため、要素をクリックできません

アクセスポイントのWeb構成を自動化しようとしています。この間、クリックしたいポップアップ(「はい」と「いいえ」のオーバーレイのようなもの)が表示されます

クリックしようとしているオーバーレイのHTMLコード:

<div id="generic-warning-dialog" class="dialog exclamation text-Orphan" style="">
<div class="warning-content dialog-content text-Orphan">Security Mode is disabled on one or more of your wireless networks. Your network could be open to unauthorized users. Are you sure you wish&nbsp;to&nbsp;proceed?</div>
    <div class="dialog-buttons text-Orphan">
        <button class="cancel">No</button>
        <button class="submit" style="display: block;">Yes</button>
    </div>
</div> 

私は試した

browser.find_element_by_class_name("submit").click()

しかし、次のエラーが発生します。

例外を発生させる(message、screen、stacktrace)Selenium.common.exceptions.ElementClickInterceptedException:メッセージ:別の要素が要素を覆い隠しているため、要素はポイント(788,636.5)でクリックできません

どのように進めればよいかアドバイスしてもらえますか?私はFirefoxとPythonを使用しています

3
Klot

ポップアップをクリックしようとしていますが、Seleniumが要素をクリックしようとすると、DOMで使用可能ですが、表示されませんである可能性があり、このエラーが発生します。

解決策は、クリックする前に、その要素がクリック可能/表示されるのを待つことです。そのためのC#コードは次のとおりです(Pythonで同等のものを書くことができます):

WaitForElementToBeClickable(By.ClassName("submit"), 20);
browser.FindElement(By.ClassName("submit")).click();


public static void WaitForElementToBeClickable(By by, int timeout)
    {
        new WebDriverWait(Driver, TimeSpan.FromSeconds(timeout)).Until(ExpectedConditions.ElementToBeClickable(by));
    }
0
Raj Kamal