Java 언어로 된 Appium을 사용하여 자동화 된 테스트를 수행하려고합니다. 그러나 요소에 액세스하려면 브라우저에서 webview를 사용하여 CSS Selector를 찾으십시오. 내 질문은 Java 언어로 Appium을 사용하여 webview로 전환하는 방법입니까? 나는 appium이 셀레늄을 지원한다는 것을 알았고 driver.switchTo().window("WEBVIEW")
10을 사용할 수 있지만 사실은 그렇지 않습니다. 이제 인터넷에서 찾은이 코드를 사용하지만 스크립트를 실행하면 TestNG가 실패 또는 성공 또는 건너 뛰기를 표시하지 않고 장치의 응용 프로그램을 닫은 다음 닫습니다. 어떤 도움이 필요합니까? 추신 :이 포럼에서 com.xxx.xxx를 myApps로 변경했습니다. css 선택기를 사용하여 자동 테스트를 실행하는 방법 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>
어떤 도움 주셔서 너무 감사 클릭 할 내가 선택한려고 요소입니다.
어쨌든 webview로 전환하는 다른 방법을 발견했습니다.이 답변을 알고 계시나요? [링크] (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 디버깅을 가능하게합니다. 그렇지 않으면 개발자에게 앱에 앱을 포함 해달라고 요청해야합니다. –
Windows 용 Appium을 사용하고 있으며 관리자가 컨텍스트가 없습니다. 어쨌든 Windows 용 Appium에서 보거나 Mac을 사용해야합니까? 고맙습니다. – Jonathan