Как нажать на эту кнопку с помощью Selenium?

У меня была та же ошибка, в моем случае веб-сервер был написан с узлом js, а uri для получения представлений, которые были в указанном пути с $ stateProvider, не был создан, поскольку для каждого вида / шаблона, который требуется отобразить выполняется http-запрос типа Xhr GET.

Поскольку uri не существовал, я получил код 404, и это заставило браузер получить обратный вызов, который убил его. Убедитесь, что ваш сервер возвращает запрошенное представление. (Перевод с помощью google translate)

2
задан Ratmir Asanov 16 January 2019 в 09:58
поделиться

3 ответа

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

  • Использование CSS_SELECTOR:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix"))).click()
    
  • Использование XPATH:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='ui-dialog-buttonpane ui-widget-content ui-helper-clearfix']"))).click()
    
    [1110 ]
  • Примечание : необходимо добавить следующие импорты:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

Подробное обсуждение можно найти в [115 ] selenium.common.exceptions.ElementNotVisibleException: Сообщение: элемент не взаимодействует с помощью Selenium

0
ответ дан DebanjanB 16 January 2019 в 09:58
поделиться

Вы можете использовать ActionChains для перехода к элементу

from selenium.webdriver.common.action_chains import ActionChains
element = driver.find_elements_by_css_selector("div.ui-dialog-buttonpane.ui-widget-content.ui-helper-clearfix")

actions = ActionChains(driver)
actions.move_to_element(element).perform()

или вы можете прокручивать, пока элемент не будет виден, используя scrollIntoView ():

driver.execute_script("arguments[0].scrollIntoView();", element)
0
ответ дан Ankit Agrawal 16 January 2019 в 09:58
поделиться

Когда вы используете .find_elements (обратите внимание на множественное число), он вернет список вместо одного элемента, как .find_element (единственное). Вы пробовали

browser.find_element_by_xpath("//button[.='Done']")

Если вы получили len() на эти .find_elements звонки ... это 1? Мне интересно, не существует ли более одной кнопки, которая соответствует используемым вами локаторам, и первая не видна, но вам нужна вторая или третья и т. Д.

0
ответ дан JeffC 16 January 2019 в 09:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: