Pelon selenium: подождите, пока элемент не будет доступен для клика - не работает
Я буду тестировать веб-приложение. в моей таблице есть кнопка, чтобы выбрать все записи.
Я пробовал:
driver.wait.until(ExpectedCondition.element_to_be_clickable((By.XPATH, "myXpath"))).click()
selenium нажимает кнопку, но ничего не происходит. (также с send_Keys (Keys.Return)) приложение разработано с помощью GXT, я считаю, что за кнопкой много javascript. Есть ли возможность подождать, пока не будет создан eventloader? ожидание перед щелчком решает проблему, но не решение для автоматического тестирования.
Ответы
Ответ 1
Правильный синтаксис для явного ожидания в Python:
element = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.ID, "myElement")))
Лучше, чем после вы делаете: element.click();
Итак, в вашем случае:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
element = WebDriverWait(driver, 20).until(
EC.element_to_be_clickable((By.XPATH, "myXpath")))
element.click();
Лучше следуй этому. Также поделитесь всем своим кодом, чтобы я мог его исправить. Ваш только 1-строчный код немного сбивает с толку.
Ответ 2
У меня была и эта проблема... У веб-приложений есть представления по просмотрам, и Appium иногда ошибается.
Это сработало для меня:
x = webElement.location['x'] + (webElement.size['width']/2)
y = webElement.location['y'] + (webElement.size['height']/2)
print("x: "+x+" - y: "+y)
//I have setted a 200 milli duration for the click...
//I use tap just for Android... If is iOS for me it works better touchAction
driver.tap([(x,y)], 200)
Edit
Я неправильно понял ваш вопрос... Извините...
Возможно, вы изменили свой Xpath:
(не знаю, будет ли это работать в веб-приложении)
xpath = "//whatever_goes_here[@clickable='true']"