如何将我的 Selenium 代码更改为 HtmlUnit

How to change my Selenium code to HtmlUnit

我有下面的 selinium 代码,它工作正常。我想要的是将此代码转换为 HtmlUnit。我可以像 WebDriver driver = new HtmlUnitDriver();

这样使用 HtmlUnitDriver

我想使用纯 HtmlUnit。在我的 selinium 代码下面是一个尝试失败的 HtmlUnit 代码。

import java.util.logging.Logger; 
import org.eclipse.jetty.util.log.Log; 
import org.eclipse.jetty.util.log.StdErrLog; import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.htmlunit.HtmlUnitDriver; import com.gargoylesoftware.htmlunit.BrowserVersion; 

public class SpribeDemoTesting { 

public static void main(String[] args) { 

System.setProperty("webdriver.chrome.driver","path to chromedriver.exe");  

driver = new ChromeDriver();

driver.manage().window().maximize();

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 

WebDriverWait wait = new WebDriverWait(driver,30); 

driver.get("https://www.spribe.co/games/aviator"); 

htmlButton3 = (HtmlButton) htmlPage.getByXPath("//div[@class='modal-content']//button[1]");

谁能给我举个例子。 //在这里,我如何传递新打开的 WINDOWS 就像我在 SELENIUM 中那样 **Set windows = driver.getWindowHandles();列表 windowsH = new ArrayList<>(windows); driver.switchTo().window(windowsH.get(1)); **

您可以向 WebClient 询问当前 windows

的列表
webClient.getWebWindows()

然后您可以询问 Windows 之一来获取包含页面。

getEnclosedPage()

通常你必须将页面转换为HtmlPage,然后你才能继续页面。

顺便说一句 - 您的代码中存在重大错误

webClient.waitForBackgroundJavaScript(30);

不是一个选项;此调用等待脚本在您调用时完成。或者换句话说,如果触发了一些异步 js,则必须在某些操作(例如 click())之后放置此调用以等待 js。