как передать более одного веб-элемента на страницу с помощью phantomjs - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь использовать фантомы для тестирования, у меня есть одна страница входа с очевидными двумя параметрами имя пользователя и пароль . Если я попробую тот же код с Google URL, где я должен передать только один элемент и сказать element.submit (); но на моей странице входа я хочу передать два элемента, как добиться того же?

вот мой код -

import java.io.File;
import java.io.IOException;

import org.apache.maven.shared.utils.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;

public class PhantomExample {

    public PhantomExample() {
        System.out.println("this is constructor");
    }
    @Test
    public void verify() {
        File src = new File("C:\\Users\\Admin\\Downloads\\Compressed\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");

        DesiredCapabilities phantomjsCap = new DesiredCapabilities();
        phantomjsCap.setJavascriptEnabled(true);
        phantomjsCap.setCapability("phantomjs.binary.path", src.getAbsolutePath());

        System.out.println("inside the verify method");
        System.setProperty("phantomjs.binary.path", src.getAbsolutePath());
        WebDriver driver = new PhantomJSDriver(phantomjsCap);
        driver.get("http://localhost:8080/MyApp/Login");
        System.out.println(driver.getPageSource());
        WebElement el =driver.findElement(By.name("username"));
        WebElement elp =driver.findElement(By.name("password"));
        el.sendKeys("username");
        elp.sendKeys("0");
        el.submit();
        elp.submit();
        System.out.println(driver.getTitle());
        System.out.println(driver.getCurrentUrl());
        System.out.println(driver.getPageSource());
        File Ss=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        try {
            FileUtils.copyFile(Ss, new File("d:/sample.jpg"));

            }
            catch (IOException e) {

            System.out.println(e.getMessage());

            }
        driver.quit();
    }    
}

Здесь я создал два отдельных элемента и ожидал получить ответ, но когда я запускаю его в режиме отладчика, он не выполняется после строки el.submit ();

Я совершенно уверен, что я поступаю неправильно, но может кто-нибудь сказать мне, каков правильный подход к этому, и объяснить, как получить объект ответа, который сервер отправит после входа в систему?

1 Ответ

0 голосов
/ 17 мая 2018

Вызов метода submit() для поля ввода отправляет всю форму (со всеми входными значениями), поэтому можно удалить следующую строку:

    elp.submit();

Если формаимеет кнопку отправки, после выполнения el.submit() вход будет выполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...