У меня была та же ошибка, в моем случае веб-сервер был написан с узлом js, а uri для получения представлений, которые были в указанном пути с $ stateProvider, не был создан, поскольку для каждого вида / шаблона, который требуется отобразить выполняется http-запрос типа Xhr GET.
Поскольку uri не существовал, я получил код 404, и это заставило браузер получить обратный вызов, который убил его. Убедитесь, что ваш сервер возвращает запрошенное представление. (Перевод с помощью google translate)
Чтобы щелкнуть по элементу, поскольку нужный элемент является динамическим элементом, вы должны заставить 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
blockquote>
Вы можете использовать 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)
Когда вы используете .find_elements
(обратите внимание на множественное число), он вернет список вместо одного элемента, как .find_element
(единственное). Вы пробовали
browser.find_element_by_xpath("//button[.='Done']")
Если вы получили len()
на эти .find_elements
звонки ... это 1? Мне интересно, не существует ли более одной кнопки, которая соответствует используемым вами локаторам, и первая не видна, но вам нужна вторая или третья и т. Д.