Erwartete Bedingung fehlgeschlagen: warten auf die Sichtbarkeit des Elements, die sich durch.xpath

Ich versuche, klicken Sie auf den link "Anmelden" auf der Website alibaba.com

Dies ist mein test-Fall:

public class TestCase {

    public static void main(String[] args) throws InterruptedException {
        //TODO Auto-generated method stub

        String URL = "http://www.alibaba.com/";
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver",
                "D:\\chromedriver_win32\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get(URL);
        Thread.sleep(2000);
        SignIn.SignIn_click(driver).click();
    }

}

Dies ist eine Objekt-Klasse, wo in bin Auffinden der web-element

package PageObjects;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class SignIn {


    private static WebElement element = null;

    public static WebElement SignIn_click(WebDriver driver) {
        element = (new WebDriverWait(driver, 10)).until(ExpectedConditions
                .visibilityOfElementLocated(By
                        .xpath("//a[@data-val='ma_signin']")));
        element = driver.findElement(By
                .xpath("//a[@data-val='ma_signin']"));
        return element;

    }

}

Aber wenn ich diesen code ausführen , ich bin immer diese exception:

Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of element located by By.xpath: //a[@data-val='ma_signin'] (tried for 10 second(s) with 500 MILLISECONDS interval)
    Build info: version: 'unknown', revision: '86a5d70', time: '2017-02-16 07:47:51 -0800'
    System info: host: 'ANUM-PC', ip: '172.16.11.162', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_121'
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.30.477700 (0057494ad8732195794a7b32078424f92a5fce41), userDataDir=C:\Users\Anum\AppData\Local\Temp\scoped_dir1716_14873}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=59.0.3071.115, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
    Session ID: d0c1083c113270bd4ded08846544878e
        at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:80)
        at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:257)
        at PageObjects.SignIn.SignIn_click(SignIn.java:15)
        at AutomationFramework.TestCase.main(TestCase.java:24)

Bitte helfen Sie mir, dieses.

  • versuchen Sie, einen größeren timeout. machen Sie 100 Sekunden und sehen, was passiert.
  • Bekommen diese jetzt: Exception in thread "main" org.openqa.Selen.TimeoutException: Erwarteter Zustand ist fehlgeschlagen: warten auf die Sichtbarkeit des Elements, die sich durch.xpath: //a[@data-val='ma_signin'] (versucht, für 100 Sekunde(s) mit 500 MILLISEKUNDEN Intervall)
  • Dies geschieht normalerweise, wenn Sie haben eine loadng overlay platziert, während eine Seite geladen wird. In solchen Fällen ist Selen nicht finden kann, die Elemente nach dem laden verschwindet. Haben Sie eine solche überlagerung im Ort?
  • Ja , ein overlay geöffnet wird, auch wenn der Benutzer die Maus bewegen Sie den Mauszeiger auf link Anmelden. Aber einen Klick auf anmelden leitet den Benutzer zur Anmeldeseite. Was also tun in diesem Fall?
  • warten Sie, bis die Unsichtbarkeit der overlay -:)
InformationsquelleAutor user3030202 | 2017-07-05
Schreibe einen Kommentar