Я работаю с selenium, чтобы очистить некоторые данные.
На странице, которую я нажимаю, есть кнопка с надписью "custom_cols". Эта кнопка открывает для меня окно, в котором я могу выбрать свои столбцы.
Открытие этого нового окна иногда занимает некоторое время (около 5 секунд). Поэтому, чтобы справиться с этим, я использовал
WebDriverWait
с задержкой в 20 секунд. Но иногда не удается выбрать "Найти элементы" в новом окне, даже если элемент виден. Это происходит только один раз из десяти, в остальное время все работает должным образом.
Я использовал ту же функцию (WebDriverWait) и в других местах, и она работает так, как ожидалось. Я имею в виду, что она ждет, пока элементы станут видимыми, а затем щелкает по ним в тот момент, когда находит их.
Мой вопрос в том, почему элементы в новом окне не видны, хотя я жду, когда элемент станет видимым. Чтобы добавить сюда, я попытался увеличить время задержки, но все равно время от времени получаю эту ошибку.
try: myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath))) except TimeoutException: print ("xpath: Loading took too much time!") return myElem select_all_performance = '//*[@id="mks"]/body/div[7]/div[2]/div/div/div/div/div[2]/div/div[2]/div[2]/div/div[1]/div[1]/section/header/div' self.wait_for_elem_xpath(xpath = select_all_performance).click()
Переведено автоматически
Ответ 1
После ожидания элемента и продвижения вперед при попытке вызвать click() метод вместо использования presence_of_element_located() метода вам нужно использовать element_to_be_clickable() следующим образом :
Parameter : locator - used to find the element returns the WebElement once it is located
Description : An expectation for checking that an element is present on the DOM of a page. This does not necessarily mean that the element is visible or interactable (i.e. clickable).
Parameter : locator - used to find the element returns the WebElement once it is located and visible
Description : An expectation for checking that an element is present on the DOM of a page and visible. Visibility means that the element isnot only displayed but also has a height and width that is greater than 0.