Исключение: Не удалось найти элемент на странице по заданным параметрам поиска в Appium.

Пытаюсь автоматизировать тест на iPad-эмуляторе в Browserstack-облаке. Многие стратегии поиска, которые я пробовал, ломаются со следующим исключением:

Исключение: Элемент не может быть найден на странице по заданным параметрам поиска.

Поскольку я перепробовал много вариантов, я совершенно уверен, что моя ошибка является общей, но я не могу ее найти. Мой код С#:

DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.SetCapability("device", "iPad Air 2");
capabilities.SetCapability("browserstack.user", browserStackUser);
capabilities.SetCapability("browserstack.key", browserStackKey);
capabilities.SetCapability("name", "ios - actions");

Uri serverUri = new Uri("http://hub.browserstack.com/wd/hub/");
AppiumDriver<IWebElement> driver = new IOSDriver<IWebElement>(serverUri, capabilities, new TimeSpan(1000000000000));
driver.Navigate().GoToUrl("http://www.amazon.de");
driver.Context = "NATIVE_APP";
Thread.Sleep(20000);
IWebElement anyElement = driver.FindElementByName("field-keywords");

Какова общая ошибка в этом подходе?

Это элемент, который я пытаюсь найти: пример приложения Amazon


person it-freelancer-magazin.de    schedule 19.08.2016    source источник


Ответы (1)


Не могли бы вы опубликовать скриншот, чтобы я мог дать вам стратегию определения местоположения, которую следует использовать. Кроме того, вместо GoToUrl вы можете использовать get API. Код ниже находится в java.

driver.get(""http://www.amazon.de");
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.presenceOfElementLocated(BY-LOCATOR-STRATEGY-HERE)); //wait for page to load before finding any element
WebElement element = driver.findElement(BY-LOCATOR-STRATEGY-HERE);
person Suman    schedule 19.08.2016
comment
Я добавил скриншот. Стратегия поиска по имени. - person it-freelancer-magazin.de; 22.08.2016
comment
@projekt-fisch: я не использовал браузерный стек для автоматизации appium. Но, поскольку это браузер, поэтому в вашем контексте не может быть NATIVE_APP. Этот контекст используется для нативных приложений. Ваш тест запускает браузер и открывает сайт Amazon? Если да, то вы можете добавить оператор ожидания для логотипа Amazon, а затем нажать на строку поиска. wait.until(ExpectedConditions.presenceOfElementLocated(By.id("nav-logo"))); driver.findElement(By.id("twotabsearchtextbox")).sendKeys("TEXT-TO-SEARCH"); - person Suman; 22.08.2016
comment
спасибо. Ваш ответ направлен на «нормальную» автоматизацию браузера. Но мне нужно найти элемент на эмуляторе iPad. - person it-freelancer-magazin.de; 22.08.2016
comment
Тот же метод wait.untilElement и findElement можно использовать для поиска элемента в эмуляторе iPad. - person Suman; 22.08.2016