标签: htmlunit

如何在Python中使用带有Selenium的HTMLUnit驱动程序?

如何告诉Selenium使用HTMLUnit?

我在后台运行selenium-server-standalone-2.0b1.jar作为Selenium服务器,并使用"pip install -U selenium"安装最新的Python绑定.

一切都适用于Firefox.但我想使用HTMLUnit,因为它重量更轻,不需要X.这是我尝试这样做的:

>>> import selenium
>>> s = selenium.selenium("localhost", 4444, "*htmlunit", "http://localhost/")
>>> s.start()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/selenium/selenium/selenium.py", line 189, in start
    result = self.get_string("getNewBrowserSession", start_args)
  File "/usr/local/lib/python2.6/dist-packages/selenium/selenium/selenium.py", line 223, in get_string
    result = self.do_command(verb, args)
  File "/usr/local/lib/python2.6/dist-packages/selenium/selenium/selenium.py", line 217, in do_command
    raise Exception, data
Exception: Failed to start new browser session: Browser not supported: *htmlunit

Supported browsers include:
  *firefox
  *mock
  *firefoxproxy
  *pifirefox
  *chrome
  *iexploreproxy
  *iexplore
  *firefox3 …
Run Code Online (Sandbox Code Playgroud)

python selenium-rc htmlunit selenium-webdriver

13
推荐指数
2
解决办法
1万
查看次数

12
推荐指数
1
解决办法
2937
查看次数

HtmlUnit查看源代码

HtmlUnit for Java很棒,但我无法弄清楚如何查看完整的源代码或将网站的源代码作为字符串返回.谁能帮我这个?

我知道以下将阅读该网站,但现在我只想将源返回到一个字符串.

HtmlPage mySite = webClient.getPage("http://mysite.com");
Run Code Online (Sandbox Code Playgroud)

谢谢!

java htmlunit

12
推荐指数
2
解决办法
1万
查看次数

如何结合scrapy和htmlunit用javascript抓取网址

我正在研究Scrapy来抓取页面,但是,我无法使用javascript处理这些页面.人们建议我使用htmlunit,所以我安装了它,但我根本不知道如何使用它.任何人都可以给我一个例子(scrapy + htmlunit)吗?非常感谢.

javascript scrapy htmlunit

12
推荐指数
1
解决办法
8073
查看次数

生产中的HtmlUnit + Selenium

我目前正在使用HtmlUnit和Selenium在我的生产代码中驱动它(WebDriver).

我正在以编程方式使用这些库进行各种网站的搜索和交互,并且取得了一些成功,并且没有遇到内存问题(确保会话始终被清理).

我想知道这些库是否适用于生产环境或推荐使用.由于有关自动化测试的大量信息而不是我如何使用它,因此很难通过Google找到.

我意识到这是一个相当普遍的问题,但我正在寻求关于这些库的建议以及可能更好的替代方案.

java selenium webdriver htmlunit

12
推荐指数
2
解决办法
3522
查看次数

如何告诉HtmlUnit的WebClient下载图像和CSS?

如何使WebClient下载外部CSS样式表和图像主体就像通常的Web浏览器一样?

java htmlunit

11
推荐指数
1
解决办法
9778
查看次数

Html,处理JSON响应

我有一个页面作为HtmlUnit中的UnexpectedPage返回,响应是JSON.我可以使用HTMLUnit来解析这个还是需要一个额外的库?

java json htmlunit

11
推荐指数
1
解决办法
9298
查看次数

使用WebDriver时是否可以忽略JavaScript异常(HtmlUnit,Ruby绑定)

当我加载页面时,HtmlUnit抛出异常并导致我的测试崩溃

caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => true)
driver = Selenium::WebDriver.for(:remote, :desired_capabilities => caps)
driver.navigate.?? url
Run Code Online (Sandbox Code Playgroud)

ReferenceError:未定义"x".(net.sourceforge.htmlunit.corejs.javascript.EcmaError)

如果我使用Firefox驱动程序,则不会抛出异常.

caps = Selenium::WebDriver::Remote::Capabilities.firefox
Run Code Online (Sandbox Code Playgroud)

或者为HtmlUnit驱动程序禁用JavaScript

caps = Selenium::WebDriver::Remote::Capabilities.htmlunit(:javascript_enabled => false)
Run Code Online (Sandbox Code Playgroud)

我无法更改测试页面上的代码并解决问题,因此我需要忽略它或以任何方式使用Firefox JavaScript Engine而不是标准的HtmlUnit JavaScript引擎.

是否可以在不更改测试页代码的情况下解决我的问题?

更新: 尝试Capybara + WebKit作为Selenium + HtmlUnit的替代品 - 工作正常,没有错误.但我还是想在不改变框架的情况下解决问题.

javascript ruby selenium webdriver htmlunit

11
推荐指数
2
解决办法
1万
查看次数

HTMLUnit:执行速度超慢?

我一直在使用HTMLUnit.它很适合我的要求.但它似乎非常缓慢.例如:我使用HTMLUnit自动化了以下场景

Goto Google page
Enter some text
Click on the search button
Get the title of the results page
Click on the first result.
Run Code Online (Sandbox Code Playgroud)

代码:

long t1=System.currentTimeMillis();
Logger logger=Logger.getLogger("");
logger.setLevel(Level.OFF);
WebClient webClient=createWebClient();
WebRequest webReq=new WebRequest(new URL("http://google.lk"));

HtmlPage googleMainPage=webClient.getPage(webReq);
HtmlTextInput searchTextField=(HtmlTextInput) googleMainPage.getByXPath("//input[@name='q']").get(0);
HtmlButton searchButton=(HtmlButton) googleMainPage.getByXPath("//button[@name='btnK']").get(0);

searchTextField.type("Sri Lanka");
System.out.println("Text typed!");
HtmlPage googleResultsPage= searchButton.click();
System.out.println("Search button clicked!");

System.out.println("Title : " + googleResultsPage.getTitleText());

HtmlAnchor firstResultLink=(HtmlAnchor) googleResultsPage.getByXPath("//a[@class='l']").get(0);
HtmlPage firstResultPage=firstResultLink.click();
System.out.println("First result clicked!");

System.out.println("Title : " + firstResultPage.getTitleText());
//System.out.println(firstResultPage.asText());
long t2=System.currentTimeMillis();
long diff=t2-t1;
System.out.println("Time elapsed : …
Run Code Online (Sandbox Code Playgroud)

java selenium htmlunit

11
推荐指数
2
解决办法
1万
查看次数

使用HtmlUnit下载文件

我想下载一个网站的xls文件.当我点击链接下载文件时,我会收到一个javascript确认框.我在下面处理它

    ConfirmHandler okHandler = new ConfirmHandler(){
            public boolean handleConfirm(Page page, String message) {
                return true;
            }
        };
    webClient.setConfirmHandler(okHandler);
Run Code Online (Sandbox Code Playgroud)

有一个下载文件的链接.

<a href="./my_file.php?mode=xls&amp;w=d2hlcmUgc2VsbElkPSd3b3JsZGNvbScgYW5kIHN0YXR1cz0nV0FJVERFTEknIGFuZCBkYXRlIDw9IC0xMzQ4MTUzMjAwICBhbmQgZGF0ZSA%2BPSAtMTM1MDgzMTU5OSA%3D" target="actionFrame" onclick="return confirm('Do you want do download XLS file?')"><u>Download</u></a>
Run Code Online (Sandbox Code Playgroud)

我点击链接使用

HTMLPage x = webClient.getPage("http://working.com/download");
HtmlAnchor anchor = (HtmlAnchor) x.getFirstByXPath("//a[@target='actionFrame']");
anchor.click();
Run Code Online (Sandbox Code Playgroud)

handeConfirm()方法已被执行.但我不知道如何从服务器保存文件流.我尝试使用下面的代码查看流.

anchor.click().getWebResponse().getContentAsString();
Run Code Online (Sandbox Code Playgroud)

但是,结果与页面x相同.任何人都知道如何从服务器捕获流?谢谢.

download htmlunit

11
推荐指数
2
解决办法
1万
查看次数