Как получить доступ к форме ввода логина / регистрации всплывающих в Selenium - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь получить доступ к следующему сайту и получить всплывающее окно регистрации. В HTML это отображается как тип формы. Я попытался обработать как предупреждение, но это не так, и я получаю исключение, так как не открылось модальное диалоговое окно. Я попробовал оконные ручки. Размер оконных ручек составляет всего 1.

Пожалуйста, помогите мне, чтобы я мог нажать на ссылку «Войти» в регистрационной форме, а затем войти в систему.

Сайт: http://way2automation.com/way2auto_jquery/index.php

System.setProperty("webdriver.gecko.driver", "C:\\mamtha\\Selenium Practice\\GeckoDriver\\geckodriver.exe");
    String URL = "http://way2automation.com/way2auto_jquery/tooltip.php";
    WebDriver driver = new FirefoxDriver();
    driver.get(URL);
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    Thread.sleep(3000);

Set <String> winhandle = driver.getWindowHandles();
System.out.println(winhandle.size());


    WebElement sigin = driver.findElement(By.xpath("//a[contains(text(), 'Signin']"));
    sigin.click();
    driver.findElement(By.xpath("//input[@name = 'username']")).sendKeys("myusername");
    driver.findElement(By.xpath("//input[@name = 'password']")).sendKeys("password");
    driver.findElement(By.xpath("//input[@class = 'button']")).click();

Ответы [ 2 ]

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

Попробуйте следующий код.

String URL = "http://way2automation.com/way2auto_jquery/tooltip.php";
WebDriver driver = new ChromeDriver();
driver.get(URL);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
Thread.sleep(5000);

WebElement sign=driver.findElement(By.xpath("//p[@class='text_popup']/a[contains(text(),'Signin')]"));
sign.click();
Thread.sleep(5000);
driver.findElement(By.xpath("//div[@id='login']/form/fieldset[1]/input")).sendKeys("myusername");
Thread.sleep(5000);
driver.findElement(By.xpath("//div[@id='login']/form/fieldset[2]/input")).sendKeys("password");
driver.findElement(By.xpath("//div[@id='login']/form/div/div[2]/input")).click();
0 голосов
/ 29 июня 2018

Модальное диалоговое окно открывается на той же самой странице. Поэтому вы не хотите использовать дескрипторы окна. Вам нужно сначала переместить фокус в модальное диалоговое окно, а затем напрямую получить доступ к необходимому элементу (также добавьте несколько явных условий ожидания).

Рабочий код:

    System.setProperty("webdriver.gecko.driver", "C:\\mamtha\\Selenium Practice\\GeckoDriver\\geckodriver.exe");
    String URL = "http://way2automation.com/way2auto_jquery/tooltip.php";
    WebDriver driver = new FirefoxDriver();
    driver.get(URL);
    driver.manage().window().maximize();
    //Explicit wait is added after the Page load
    WebDriverWait wait=new WebDriverWait(driver,20);
    wait.until(ExpectedConditions.titleContains("Welcome"));

    WebElement modalDialogBox=driver.findElement(By.className("fancybox-skin"));
    modalDialogBox.findElement(By.xpath(".//a[text()='Signin']")).click();

    wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("fancybox-skin")));
    WebElement loginDialogBox=driver.findElement(By.className("fancybox-skin"));

    loginDialogBox.findElement(By.name("username")).sendKeys("myusername");
    loginDialogBox.findElement(By.name("password")).sendKeys("987654321");
    loginDialogBox.findElement(By.className("button")).click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...