2017-09-05 2 views
3

Je suis nouveau à Appium. J'essaie d'exécuter mon script sélénium sur mobile en utilisant Appium. Mais je suis une erreur comme ci-dessousAppium, WebDriver

org.openqa.selenium.WebDriverException: valeur retournée ne peut pas être converti en WebElement: {ELEMENT=0.5768692365381867-1}

code J'utilise est comme ci-dessous: -

AppiumDriver d; 
    @BeforeClass 
    public void setUp() throws Exception 
    { 
     //Set Capabilities 
     DesiredCapabilities caps=new DesiredCapabilities(); 
     caps.setCapability("deviceName", "Celkon A35K Remote"); 
     caps.setCapability("platformName", "Android"); 
     caps.setCapability("platformVersion", "4.4.2"); 
     caps.setCapability("browserName", "Browser"); 

     d = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps); 
     d.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS); 
     d.manage().timeouts().pageLoadTimeout(120,TimeUnit.SECONDS); 
    } 
@Test 
public void testFBLogin() throws Exception 
{ 
    //Load web page 
    d.get("https://www.facebook.com/"); 
    //Enter user name 
    d.findElementByName("email").sendKeys("Appium"); 
    //Enter password 
    d.findElementByName("pass").sendKeys("Appium"); 
    //Click on Login 
    d.findElementByName("login").click(); 
    Thread.sleep(10000); 
} 
@AfterClass 
public void tearDown() 
{ 
    //Close browser 
    d.quit(); 
}`script: 
+0

Sur quelle ligne obtenez-vous cette erreur? –

Répondre

1

Déclarez AndroidDriver d; au lieu de AppiumDriver d.

0

utilisez caps.setCapability (CapabilityType.BROWSER_NAME, "chrome");

Vous pouvez également remplacer AppiumDriver sur AndroidDriver si vous ne souhaitez exécuter ce script que sur des appareils Android, sinon, si vous souhaitez utiliser IOS et Android, veuillez utiliser Appium.

RemoteWebDriver: Cette classe de pilote provient directement du projet Selenium en amont. C'est un pilote assez générique où initialiser le pilote signifie faire des demandes réseau à un concentrateur Selenium pour démarrer une session de pilote. Comme Appium fonctionne sur le modèle client-serveur, Appium l'utilise pour initialiser une session de pilote. Cependant, l'utilisation directe de RemoteWebDriver n'est pas recommandée, car d'autres pilotes offrent des fonctionnalités supplémentaires ou des fonctions pratiques.

AppiumDriver: Cette classe de pilote hérite de la classe RemoteWebDriver, mais elle ajoute des fonctions supplémentaires utiles dans le cadre d'un test d'automatisation mobile via le serveur Appium. AndroidDriver: Cette classe de pilote hérite de AppiumDriver, mais elle ajoute des fonctions supplémentaires qui sont utiles dans le contexte d'un test d'automatisation mobile sur des appareils Android via Appium. N'utilisez cette classe de pilote que si vous voulez lancer un test sur un appareil Android ou un émulateur Android.

IOSDriver: Cette classe de pilote hérite de AppiumDriver, mais elle ajoute des fonctions supplémentaires qui sont utiles dans le contexte d'un test d'automatisation mobile sur des appareils iOS via Appium. N'utilisez cette classe de pilote que si vous souhaitez démarrer un test sur un périphérique iOS ou un émulateur iOS.

Comme vous pouvez le voir, les pilotes et leurs noms sont étroitement liés à ce qu'ils font. Quand il s'agit d'initialiser un pilote, utilisez uniquement les pilotes Android ou IOS.

http://discuss.appium.io/t/what-is-the-use-or-difference-between-androiddriver-iosdriver-appiumdriver-and-remote-webdriver/8750/2

0

Vous devez remplacer

AppiumDriver d; 

Avec cette

AndroidDriver <MobileElement> d; 

Espérons que cela résoudra votre problème.

1

ci-dessous le code travaillera pour vous, préférable de tester sur le périphérique réel. le seul changement que j'ai fait est "caps.setCapability (" browserName "," Chrome ");"

static AppiumDriver d; 
@BeforeClass 
public static void setUp() throws Exception 
{ 
    //Set Capabilities 
    DesiredCapabilities caps=new DesiredCapabilities(); 
    caps.setCapability("deviceName", "Celkon A35K Remote"); 
    caps.setCapability("platformName", "Android"); 
    caps.setCapability("platformVersion", "6"); 
    caps.setCapability("browserName", "Chrome"); 

    d = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"), caps); 
    d.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); 
    d.manage().timeouts().pageLoadTimeout(120,TimeUnit.SECONDS); 
} 
@Test 
public void testFBLogin() throws Exception 
{ 
    //Load web page 
    d.get("https://www.facebook.com/"); 
    //Enter user name 
    d.findElementByName("email").sendKeys("Appium"); 
    //Enter password 
    d.findElementByName("pass").sendKeys("Appium"); 
    //Click on Login 
    d.findElementByName("login").click(); 
    Thread.sleep(10000); 
} 
@AfterClass 
public static void tearDown() 
{ 
    //Close browser 
    d.quit(); 
} 
1

Pourriez-vous fournir des journaux plus détaillés pour mieux vous aider?

Basé sur le code que vous avez mentionné, ce que je peux penser que vous pourriez faire

  • Déclarant AndroidDriver est pas le problème. Cela devrait fonctionner comme ça.
  • Tout comme certaines personnes l'ont déjà dit que vous devez changer le

caps.setCapability ("browserName", "Browser");

à

caps.setCapability ("browserName", "chrome");

Saucelabs a une excellente documentation à ce sujet ici https://wiki.saucelabs.com/display/DOCS/Examples+of+Test+Configuration+Options+for+Website+Tests#ExamplesofTestConfigurationOptionsforWebsiteTests-Mac/OSX/Safari. Check it out

J'ai des problèmes avec l'aide de "http://0.0.0.0:4723/wd/hub"

Hope this helps.

-Raj

http://www.testim.io

Twitter: https://twitter.com/epsilon11