Невозможно найти ошибку элемента при попытке войти в gmail с помощью браузера без головы в селене - PullRequest
0 голосов
/ 11 мая 2018

Я попытался войти в Gmail, используя безголовый браузер с Selenium, но он выдает:

'Unable to locate element: {"method":"xpath","selector":"//input[@id='identifierId']"} 

Но то же самое прекрасно работает с обычным браузером, использующим селен. Мой фрагмент кода ниже:

public static WebDriver login_page() throws InterruptedException {

    //WebDriver driver = new HtmlUnitDriver();
    System.setProperty("webdriver.chrome.driver", "D:/Selenium/chromedriver.exe");
    ChromeOptions option=new ChromeOptions();
    option.addArguments("start-maximized");
    option.addArguments("disable-infobars");
    option.addArguments("--disable-extensions");
    option.addArguments("--headless");
    WebDriver driver = new ChromeDriver(option);
    driver.get("https://www.gmail.com");       
    Thread.sleep(10000);
    System.out.println("Page title is: " + driver.getTitle()); 
    String title = driver.getTitle();
    try {
        Assert.assertEquals(title, "Gmail");
        System.out.println("Correct Page Loaded");
    }catch(AssertionError e) {
        System.out.println("Correct Page NOT Loaded");
    }
    WebElement name = driver.findElement(By.xpath("//input[@id='identifierId']"));
    name.sendKeys("test@gmail.com");
    driver.findElement(By.xpath("//span[@class='RveJvd snByac'][contains(text(),'Next')]")).click();
    Thread.sleep(5000);
    WebElement pwd= driver.findElement(By.xpath("//input[@type='password']"));
    pwd.sendKeys("Passwor1234");
    driver.findElement(By.xpath("//span[@class='RveJvd snByac'][contains(text(),'Next')]")).click();
    // System.out.println("Page title is: " + driver.getTitle());
}

1 Ответ

0 голосов
/ 06 июня 2018

Пожалуйста, ознакомьтесь с этим подробным xpath-документом здесь. http://chercher.tech/java/relative-xpath-selenium-webdriver

Ваш ответ может быть здесь в "Нормализации пространства в Xpath"

пример использования driver.findElement(By.xpath("//button[normalize-space (contains(.,'" + Hello World+ "'))]")).click();

надеюсь, что это будет работать

С наилучшими пожеланиями, Гаурав

...