0

У меня есть собственное приложение, которое открывает несколько страниц веб-просмотра. Я запускаю appium в приложении, чтобы выполнить тест автоматизации на странице веб-просмотра, которую мне нужно прокрутить, чтобы найти поля имени пользователя и пароля. Я пробовал все предложения, которые я могу найти в Интернете, и он не работает. Может ли кто-нибудь помочь? Я бегу: Appium v1.3.5 IOS 8,1Невозможно найти элемент на странице веб-просмотра родного приложения iOS с помощью Appium

Вот мой код:

// switch to webview 

Thread.sleep(6000); 
final Set<String> contextNames = driver.getContextHandles(); 
for (final String contextName : contextNames) { 
    System.out.println(contextName); 
    if (contextName.contains("WEBVIEW")) { 
    driver.context(contextName); 
    } 
} 

Thread.sleep(6000); 
WebElement x = driver.findElement(By.cssSelector("Username *")); 
assertTrue(x.isDisplayed()); 

Здесь элемент Стараюсь для прокрутки и введите имя пользователя

 <AppiumAUT> 
     <UIAApplication name="Demo A" label="Demo A" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0" x="0" y="24.125" width="375" height="642.1875">  
     <UIAWindow name="" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/2" x="0" y="0.6875" width="375" height="665.625"> 
     <UIAScrollView name="" label="" value="" dom="" enabled="true" valid="true" visible="true" hint="" path="/0/2/1" x="29.296875" y="40.53125" width="316.40625" height="548.4375"> 
      <UIAWebView name="" label="" value="" dom="" enabled="true" valid="true" visible="false" hint="" path="/0/2/1/0" x="29.296875" y="40.53125" width="684.375" height="1170.703125"> 
       <UIAStaticText name="Username *" label="Username *" value="" dom="[object Object]" enabled="true" valid="true" visible="false" hint="" path="/0/2/1/0/15" x="94.921875" y="783.5" width="92.578125" height="22.265625"> 
       </UIAStaticText> 
       <UIATextField name="" label="" value="" dom="[object Object]" enabled="true" valid="true" visible="false" hint="" path="/0/2/1/0/16" x="94.921875" y="811.625" width="604.6875" height="46.875"> 
       </UIATextField> 

Здесь это сообщение об ошибке:

org.openqa.selenium.InvalidElementStateException: SyntaxError: DOM Exception 12 (WARNING: The server did not provide any stacktrace information)Command duration or timeout: 22 milliseconds 

I ha пробовал следующее и не работает:

  1. переключатель к окну первого с помощью driver.switchTo().window("WEBVIEW_1");
  2. использование driver.findElement(By.id("Username *"))
  3. использование driver.findElement(By .xpath("//input[@name='Username *']"));
  4. использование driver.findElement(By .xpath("//UIAApplication[1]/UIAWindow[3]/UIAScrollView[1]/UIAWebView[1]/UIAStaticText[14]"));

Я также попытался перейти к сначала:

  1. использование только scollto: driver.scrollTo("Username *");
  2. `((JavascriptExecutor) драйвер) .executeScript (
    • "аргументы [0] .scrollIntoView (истина);", driver.findElement (By.name ("Имя пользователя *"))); `

сообщение об ошибке либо NoSuchElement или выше.

Пожалуйста, помогите! Благодаря!

ответ

1

Я бы пошел на driver.findElement (By.xpath ("// UIAStaticText [содержит (@ name, 'Username')]")); Фактически, все методы поиска для размещения элементов могут быть сначала проверены в Appium Inspector, чтобы убедиться, что они работают.