Я пытаюсь выполнить автоматическое тестирование с использованием Appium на языке Java. Однако для доступа к элементам я использую webview в браузере, чтобы найти с помощью css Selector. Мой вопрос: как переключиться на веб-просмотр с помощью Appium на языке Java? Я нашел, что appium поддерживает селен и может использовать driver.switchTo().window("WEBVIEW")
, но факт его нет. Теперь я использую этот код, который я нашел в Интернете, но когда я запускаю скрипт, TestNG не показывал ничего неудачного или преуспел или пропустил, и приложение на устройстве просто открылось, затем закрылось. Любая помощь? PS: Я изменил com.xxx.xxx на myApps для этого форума.Как запустить автоматическое тестирование с помощью css Selector Appium java
package com.android.test;
import java.net.URL;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import java.net.MalformedURLException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import static org.junit.Assert.assertEquals;
public class Login2 {
public static AppiumDriver<WebElement> driver;
@BeforeTest
public void before() throws MalformedURLException, InterruptedException{
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "192.168.150.101:5555");
capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android");
capabilities.setCapability(CapabilityType.VERSION, "5.1.0");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "myApps");
capabilities.setCapability("appActivity", "myApps");
driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
Set<String> availableContexts = driver.getContextHandles();
System.out.println("Total No of Context Found After we reach to WebView = "+ availableContexts.size());
for(String context : availableContexts) {
if(context.contains("WEBVIEW")){
System.out.println("Context Name is " + context);
// 4.3 Call context() method with the id of the context you want to access and change it to WEBVIEW_1
//(This puts Appium session into a mode where all commands are interpreted as being intended for automating the web view)
driver.context(context);
break;
}
}
}
@Test
public void login() throws InterruptedException{
//Thread.sleep(6000);
WebElement log = driver.findElement(By.cssSelector("div[ng-click^='logReg']"));
log.click();
driver.context("NATIVE_APP");
}
@AfterTest
public void after(){
driver.quit();
}
}
Это элемент Я пытаюсь выбрать быть щелкнул
<div class="background-menu col box-menu loginIcon" ng-click="logReg()">
<img class="menu_icon3" src="img/MenuIcon/blank.png" alt="login">
</div>
Большое спасибо за любую помощь.
В любом случае, я нашел другой способ переключиться на веб-просмотр, вы знаете ответ для этого? [link] (http://stackoverflow.com/questions/38452767/cannot-start-a-selendroid-session-because-the-server-apk-does-not-exist) Большое вам спасибо. Как проверить, установлено ли приложение true или false? Поскольку я этого не делал, я просто тестирую его. Спасибо. – Jonathan
Вы можете проверить это в Appium Inspector. В свойствах выбранного элемента есть меню «Контекст» (проверьте скриншот - http://imgur.com/a/RoFZy). Если есть «WebView», в вашем приложении включена отладка WebView. В противном случае вам нужно попросить разработчика включить его в приложение. –
Я использую Appium для Windows и нет никакого контекста у инспектора. Есть ли все-таки, чтобы увидеть это в Appium для Windows или использовать Mac? Спасибо. – Jonathan