Поиск всплывающего окна с помощью HtmlUnit - PullRequest
0 голосов
/ 05 февраля 2019

Я создаю программу, которая авторизуется на сайте и очищает некоторые данные.Форма входа - это всплывающее окно.Поэтому мне нужно перейти на этот веб-сайт 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(); 

} 

}
...