Выбор элементов не работает гибридное приложение, но работает с нативным приложением в Appium - PullRequest
0 голосов
/ 02 июня 2018

Пытаюсь выбрать элемент и добавить событие щелчка, используя идентификатор ресурса

. Это гибридное приложение, разработанное в ионном

UI Automator Selector

на самом деле это вкладка

изображение вкладки

тогда я написал такой код

package android;

import org.openqa.selenium.By;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.io.File;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class app { 

public static void main(String[] args) throws Exception
{

      File f= new File("src/123.apk");
      DesiredCapabilities capabilities = new DesiredCapabilities();
      capabilities.setCapability("deviceName", "Galaxy Nexus API 23");
      capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

      capabilities.setCapability("platformName", "Android");
      capabilities.setCapability("unicodeKeyboard", "true");
      capabilities.setCapability("resetKeyboard", "true");
      capabilities.setCapability("newCommandTimeout", "45000");
      capabilities.setCapability("app", f.getAbsolutePath());

      RemoteWebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 

      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

      driver.findElement(By.id("tab-t0-1")).click();

 }
 }

журнал ошибок appium

Я также добавил метод xpath

driver.findElement(By.xpath("//android.widget.TabWidget/android.view.View[1][@resource-id='tab-t0-1']")).click();

, но не показывал ошибку, когда элемент не найден, фактически тот же код работает с собственным приложением с другим ресурсом - id

здесь что-то не такПожалуйста, помогите

1 Ответ

0 голосов
/ 04 июня 2018

Вы должны изменить контекст на гибридный режим:

private boolean changeContext(String context) {
    boolean changeFlag = false;
    if (StringUtils.containsIgnoreCase(context, "Native")) {
        context = "Native";
    } else if (StringUtils.containsIgnoreCase(context, "Hybrid")) {
        context = "WEBVIEW_com";
    }
    if (StringUtils.containsIgnoreCase(driver.getContext(), context)) return false;
    Set<String> contextName = driver.getContextHandles();
    for (String contexts : contextName) {
        if (StringUtils.containsIgnoreCase(contexts, context)) {
            driver.context(contexts);
            changeFlag = true;
            break;
        }
    }
    return changeFlag;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...