2016-11-09 1 views
0

예외 발생 요소를 클릭하면서 Appium에서 예외 java.lang.NoClassDefFoundError : org/openqa/selenium/HasTouchScreen을 얻는 중. 세 개의 로케이터 (텍스트, id, partialLinkText)을 동일한 코드로 동일한 태스크에 사용했지만 매번 동일한 예외가 발생했습니다. PFB 앱 DOM 스크린 샷, 코드, 예외, jarfile가 버전Appium에서 예외 발생 NoClassDefFoundError

  1. 셀레늄 - 안드로이드 - driver.jar
  2. 자바 클라이언트 4.1.2 (1)
  3. 셀레늄 - 서버 - 독립 - 3.0의 .jar .1.jar

"Sign In Or"을 클릭하여 모듈 서명을 자동화 할 수 있습니다. 하지만 첫 번째 단계에서 붙어있어 단지 :(

enter image description here

코드

import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.android.AndroidDriver; 
import org.openqa.selenium.remote.CapabilityType; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.testng.annotations.AfterTest; 
import org.testng.annotations.BeforeTest; 
import org.testng.annotations.Test; 

public class searsLogin { 
    AndroidDriver driver; 
    @BeforeTest 
    public void setup() throws MalformedURLException { 
     DesiredCapabilities capabilities = new DesiredCapabilities(); 
     capabilities.setCapability("deviceName", "ccdcb242"); 
     capabilities.setCapability(CapabilityType.BROWSER_NAME, "ANDROID"); 
     capabilities.setCapability(CapabilityType.VERSION, "5.1.1"); 
     capabilities.setCapability("platformName", "Android"); 
      capabilities.setCapability("appPackage", "com.sears.android"); 
      capabilities.setCapability("appActivity", "com.android.sears.activity.MenuDrawerActivity"); 
      driver = (AndroidDriver) new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities); 
      driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS); 
    } 
    @Test 
    void execution() 
    { 
     // driver.findElementByName("Sign in or").click();/// contains method 
// boolean res = driver.findElement(By.name("Sign in or")).isDisplayed(); 
//boolean res = driver.findElement(By.xpath("//*[contains(text(),'Sign in or')]")).isDisplayed(); 
    driver.findElement(By.partialLinkText("Sign in or")).click(); 
    } 
    @AfterTest 
    public void end() 
    { 
     driver.quit(); 
    } } 

예외 메시지

java.lang.NoClassDefFoundError: org/openqa/selenium/HasTouchScreen 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
+0

잘못된 driver.findElement (By.partialLinkText ("로그인 또는")). click(); 체크 아웃 : https://www.youtube.com/watch?v=bT3tqaLNn-Y – Manidroid

+0

@Manidroid 작동하지 않았다 manidroid –

+0

selenium-android-driver.jar? – Manidroid

답변

0

당신은 모바일 웹 로케이터를 사용하고 있습니다. 이 동작에 대한 올바른 XPath는 다음 : - :

driver.findElementByAndroidUIAutomator (". 새로운 UiSelector() 텍스트 (\"로케이터 이름 \ ")

By.xpath("//*[@text='Sign in or']") 
-1

Appium의 v1.5.3에서 안드로이드를 로케이터"이름 "을 클릭 위해 함께 노력 ").딸깍 하는 소리();

언급 된 스크린 샷 : driver.findElementByAndroidUIAutomator ("new UiSelector(). 텍스트 (\"로그인 또는 \ ")") 클릭();

+0

질문에 답하지 않고 코드의 임의의 줄을 게시했습니다. 다르게 행동하고있는 것이 무엇인지를 설명하여 문제를 묻는 사람이 무슨 일이 벌어지고 있는지 알게하십시오. –