ElementClickInterceptedException при попытке установить флажок в surveymonkey.com через Selenium и Python - PullRequest
1 голос
/ 06 марта 2019

Я играю с мини-задачей, которая была настроена для автоматизации ответа формы на опросе Обезьяна, для этого примера я настроил фиктивный опрос.

По сути, селен не может щелкнуть по полю из-за ошибки с отображением кнопки, скрывающим его.

ElementClickInterceptedException: Message: Element  input id="234136539_1601280849" class="checkbox-button-input " name="234136539[]" type="checkbox"> is not clickable at point (237.5,345.5) because another element span class="checkbox-button-display "> obscures it

Я посмотрел на этот вопрос , который специфичен для Java, и я не могу понять, как мне пройти через это, я пробовал неявное ожидание, нажимая на поле вокруг него, но немного потерял, с чего начать, не изучая Java.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys 
driver = webdriver.Firefox() 
driver.get('https://www.surveymonkey.com/r/L9DJGXR') 
vote_check = driver.find_element_by_id('234136539_1601280849') 
vote_check.click()

Этот код должен повторять проблему с фиктивным опросом.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Щелкните правой кнопкой мыши по флажку рядом с «Я» и выберите «Проверить ... какой элемент выбран»?SPAN.Это потому, что SPAN перекрывает INPUT, на который вы хотите нажать.Это то, что говорит вам эта ошибка.Вы пытаетесь нажать на элемент, который покрыт другим элементом.Selenium не может «увидеть» страницу, чтобы увидеть, что элемент под ней на самом деле не скрыт.

Решение состоит в том, чтобы щелкнуть либо SPAN, который был в ошибке, либо LABEL.Неважно, что вы делаете, оба будут работать.Два селектора CSS ниже

[id='234136539_1601280849'] + label // clicks the LABEL
^ has this ID
                            ^ '+' means sibling
                              ^ LABEL tag

[id='234136539_1601280849'] + label > span // clicks the SPAN
everything is the same as above until...
                                    ^ '>' means child
                                      ^ SPAN tag
0 голосов
/ 06 марта 2019

Чтобы установить второй флажок , связанный с текстом Me , вам нужно настроить WebDriverWait , чтобы элемент был активным для щелчка , и выможно использовать следующее решение:

  • Кодовый блок:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe') 
    driver.get('https://www.surveymonkey.com/r/L9DJGXR') 
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='question-body clearfix notranslate ']//following::label[2]"))).click()
    
  • Снимок браузера:

surveymonkey

...