2016-05-15 7 views
0

Ich bin nicht in der Lage, ein Element zu finden, trotz der Tatsache, dass die Verwendung von Appium Inspector das Element mit dem gleichen Locator befindet, den ich im Code verwende.Kann ein Element nicht mit Appium in ios finden

   By by = By.xpath("//UIATextView[@value='hey!!!!!']"); 
       boolean result; 
       do{ 
        device.swipeUp(); 
        result = waitUntil(ExpectedConditions.visibilityOfElementLocated(by)); 
       }while (!result); 

Wo ist mein WAITUNTIL definiert als:

public boolean waitUntil(ExpectedCondition<WebElement> condition){ 
    WebDriverWait wait = new WebDriverWait(device.getDriverWrapper().getIosDriver(),5); 
    wait.withTimeout(1,TimeUnit.SECONDS); 
    try { 
    wait.until(condition); // i wait until the condition will be met (with a time out of 1 seconds) and return true 
    return true; 
    } 
    catch (Exception e) { 
    return false; // if after the timeout of 1 seconds has reached then i retrun false 
    } 
} 

Ich sehe, dass das Gerät, obwohl das Element dargestellt wird Streichen nach oben hält. Irgendeine Idee?

+0

Könnten Sie bitte die Definition von 'waitUntil' in Ihrem Code teilen? B'coz zumindest ist dies sicher, dass diese Methode in Ihrem Fall immer "falsch" zurückkehrt. – nullpointer

+0

public boolean waitUntil (ExpectedCondition Bedingung) { WebDriverWait wait = neuer WebDriverWait (device.getDriverWrapper(). GetIosDriver(), 5); wait.withTimeout (1, TimeUnit.SECONDS); versuchen { wait.until (Zustand); // Ich warte bis die Bedingung erfüllt ist (mit einer Zeit von 1 Sekunden) und gebe true zurück return true; } catch (Ausnahme e) { Rückgabe false; // Wenn nach dem Timeout von 1 Sekunden erreicht wurde, trenne ich falsch } } – Shay12345678

+0

Teilen Sie die 'swipeUp()' Methode Implementierung bitte auch. Fangen Sie bitte auch nicht 'Exception' ein, es sei denn, Sie haben etwas ganz unter Kontrolle und möchten genau sein. – nullpointer

Antwort

0

Wenn Sie freuen sich zu warten, bis ein Element auf dem Bildschirm befindet, können Sie etwas Ähnliches wie die folgenden Ausschnitt verwenden:

By by = By.xpath("//UIATextView[@value='hey!!!!!']"); //any locator strategy 
new WebDriverWait(driver, timeToWaitInSeconds) 
       .until(new ExpectedCondition<WebElement>() { 
        public WebElement apply(WebDriver d) { 
         return driver.findElement(by); 
        } 
       }); 

OR etwas einfacher wie dies gilt auch für die Dinge beheben:

By by = By.xpath("//UIATextView[@value='hey!!!!!']"); 
result = driver.findElement(by); 
boolean result; 
while (!result){ 
    device.swipeUp(); 
    result = driver.findElement(by); 
} 
+0

funktioniert nicht. Der Treiber wischt weiter und hört nie auf, wenn sich das Element befindet. – Shay12345678

+0

Wenn Sie sicher sind, dass das Element gefunden wurde, muss "result" auf "true" gesetzt werden. Ich glaube, hier fehlt beim Debuggen etwas. – nullpointer

+0

das ist die sache. wenn ich den gleichen xpath benutze, benutze den appium inspector das gefundene element und ich kann darauf klicken. Ich weiß, dass das Ergebnis auf True festgelegt werden sollte, aber es ist nicht. Ich bin mir nicht sicher, was passiert – Shay12345678