Я создаю программу, которая авторизуется на сайте и очищает некоторые данные.Форма входа - это всплывающее окно.Поэтому мне нужно перейти на этот веб-сайт www.betexplorer.com, в правом верхнем углу страницы есть ссылка для входа с надписью «login».Я нажимаю на ссылку, после чего появляется всплывающая форма входа.Я могу найти ссылку для входа сверху, но не могу найти всплывающее окно формы входа.
Я использовал Selinium, который отлично работает при применении следующего кода при работе с всплывающими окнами JavaScript.
String username = "myUsername"; WebElement element = driver.findElement(By.xpath("the xpath here"));
String realUsername = "arguments[0].setAttribute('value','"+ username"')" ((JavascriptExecutor) driver).executeScript(realUsername, element);
Но сейчас я использую HtmlUnit и раньше, и моя другая программа отлично работает.
С HtmlUnit я нашел код, который помогает при работе с JavaScript всплывающим,Я пытаюсь WebWindowListener, но я не могу понять это.
Кто-нибудь может помочь?
Ниже приведены мои фрагменты кода:
public class ExplorerHtmlUnit {
public static void main(String[] args) throws Throwable {
WebClient webClient;
webClient = new WebClient();
webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setThrowExceptionOnScriptError(false);webClient.getOptions().setJavaScriptEnabled(true);java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF);
HtmlPage explorerPage = webClient.getPage("https://www.betexplorer.com");
System.out.println("Explorer Website Found");
List<DomElement> loginClick =
explorerPage.getByXPath("//a[@class='clientmenu__item__in js-window-trigger'][contains(text(),'Login')]");
for (DomElement myele : loginClick)
if(myele.getAttribute("class").equals("login")) {
myele.click();
}
}
System.out.println("login link found and clicked");
//sleep for 5 seconds for javascript form to load
Thread.sleep(5000);
LinkedList<WebWindow> windows = new LinkedList<WebWindow>();
webClient.addWebWindowListener(new WebWindowListener() {
public void webWindowOpened(WebWindowEvent event) {
windows.add(event.getWebWindow());
}
@Override
public void webWindowClosed(WebWindowEvent arg0) { }
@Override
public void webWindowContentChanged(WebWindowEvent arg0)
{ }
});
WebWindow latestWindow = windows.getLast();
HtmlPage popUpPage = (HtmlPage) latestWindow.getEnclosedPage();
HtmlTextInput submitUsername = (HtmlTextInput) popUpPage.getByXPath("//input[@id='login_nick']");submitUsername.setValueAttribute("username");
System.out.println("UserName Found And Entered");
HtmlPasswordInput submitPassword = (HtmlPasswordInput) popUpPage.getByXPath("//input[@id='login_nick']");submitPassword.setValueAttribute("password");
System.out.println("Password Found And Entered");
HtmlButton loginButton = (HtmlButton) popUpPage.getByXPath("//html[1]/body[1]/div[6]/div[1]/div[1]/div[1]/div[1]/form[1]/div[1]/div[3]/button[1]");
loginButton.click();
System.out.println("Login Button Found And Clicked");
webClient.close();
}
}