2016-11-09 72 views
0

獲取異常java.lang.NoClassDefFoundError:org/openqa/selenium/HasTouchScreen在Appium中單擊元素時。我已經使用三個定位器(文本,ID,partialLinkText)在我的代碼相同的任務,但仍然得到相同的例外每一次。 PFB在App DOM截圖,代碼,異常,jar文件版本在Appium中獲取異常NoClassDefFoundError

  1. 硒 - 機器人-driver.jar
  2. Java的客戶機-4.1.2(1)的.jar
  3. 硒 - 服務器 - 獨立-3.0 .jar

我試圖點擊文本「登錄或」,所以我可以自動登錄模塊。但我被困在第一步只:(

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(「Sign in or」))。click();,; 檢查了這一點, https://www.youtube.com/watch?v=bT3tqaLNn-Y – Manidroid

+0

@Manidroid它沒有工作manidroid –

+0

selenium-android-driver.jar? – Manidroid

回答

0

您正在使用WEB定位爲移動。 的正確的XPath爲這個行動將是以下:

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

在Appium V1.5.3 - Android的,對於點擊定位器 「名稱」 嘗試:

driver.findElementByAndroidUIAutomator( 「新UiSelector()文本(\。」 定位器名稱\「) 「)。單擊(); ()「);點擊();();點擊();點擊();

+0

你還沒有回答這個問題,只是發佈了一些隨機代碼行。解釋你在做什麼不同,以便提問的人知道發生了什麼。 –