标签: htmlunit

Java HtmlUnit - 无法登录到wordpress

我正在尝试使用HtmlUnit登录我当地的wordpress网站,但它似乎有一个cookie问题.

这就是代码的开头:

WebClient webClient = new WebClient();
HtmlPage loginPage = webClient.getPage("http://localhost/flowersWp/wp-admin");
HtmlForm form = loginPage.getFormByName("loginform");
Run Code Online (Sandbox Code Playgroud)

这就是我在日志中得到的.有人有想法吗?谢谢.

2010年11月27日12:43:35 org.apache.http.client.protocol.ResponseProcessCookies processCookies警告:Cookie被拒绝:"[version:0] [name:wordpress_2418eeb845ebfb96f6f1a71ab8c5625a] [value:+] [domain:localhost] [path :/ flowersWp/wp-admin] [expiry:Fri Nov 27 12:43:35 IST 2009]".非法路径属性"/ flowersWp/wp-admin".原产地:"/ flowersWp/wp-login.php"

htmlunit apache-httpclient-4.x

6
推荐指数
1
解决办法
9346
查看次数

htmlunit java更改输入文本

我用htmlunit.如果没有属性'value',我如何设置文本输入的值?

<input type="text" onkeypress="test();" id="id" name="name" class="ttt">
Run Code Online (Sandbox Code Playgroud)

我尝试了这个,但没有

    ((HtmlTextInput) portfolios.getHtmlElementById("id")).setText("text");
    ((HtmlInput) portfolios.getHtmlElementById("id")).setTextContent("text");
    ((HtmlInput) portfolios.getHtmlElementById("id")).setAttribute("value", "text");
Run Code Online (Sandbox Code Playgroud)

请帮忙!

java htmlunit

6
推荐指数
2
解决办法
9489
查看次数

使用HtmlUnit登录检查

Hy ...我想使用HtmlUnit登录到一些第三方网站.但是HtmlUnit应该能够告诉我对输入站点的登录尝试是否成功.有没有办法使用HtmlUnit执行此任务.请帮忙 ..!!!

谢谢Usman Raza

login htmlunit

6
推荐指数
2
解决办法
2578
查看次数

HtmlUnit 2.8 getFirstByXPath与HtmlUnit 1.14 getFirstByXPath有什么不同?

我有一个看起来像这样的网站结构:

<div class='main_container'>
     <div class='item_container'>
         <div class='body'>
             <span class='item_name'>Item 1</span>
             <span class='item_desc'>Desc 1</span>
         </div>
     </div>
     <div class='item_container'>
         <div class='body'>
             <span class='item_name'>Item 2</span>
             <span class='item_desc'>Desc 2</span>
         </div>
     </div>
     ...
</div><!--End of main_container--> 
//Note: Some divs might not have <span @class='item_name'>Item N</span> or other elements inside the item_container
Run Code Online (Sandbox Code Playgroud)

在HtmlUnit 1.14中如果我想获得所有项目名称:

List<HtmlDivision> divs = (List<HtmlDivision>)page.getByXPath("//div[@class='item_container']");
for(HtmlDivision div:divs){
    String name = ((HtmlElement)div.getFirstByXPath("//span[@class='item_name']")).asText();
    System.out.println(name);
}
Run Code Online (Sandbox Code Playgroud)

输出:

Item 1
Item 2
...
Run Code Online (Sandbox Code Playgroud)

但是在HtmlUnit 2.8中,当我做同样的事情时,我得到了.

Item 1
Item 1
...
Run Code Online (Sandbox Code Playgroud)

在HtmlUnit 2.8中是否有解决方法?

java xpath htmlunit

6
推荐指数
1
解决办法
2257
查看次数

在HTML单元中跳过特定的Javascript执行

我有一个URL.我想在执行Java Scripts后获取URL的Page-Source.

使用HtmlUnit获取页面源:URL卡住了

最初我怀疑这是由于系统资源和高CPU使用率导致URL卡住了.

然后我尝试在HTML UNIT 2.9和2.11上运行它.它在解析时都遇到了问题.请参阅上面的问题,以获取卡住的HTML UNIT代码.

现在我怀疑这可能是由于JS Execution进入无限循环.

我想检查哪些JS文件导致问题并将其从执行中删除.

如果他们是谷歌分析,推特等网站的JS,我可能根本不需要它们.

所以我想找到一种方法告诉HTML单元忽略某些JS文件并执行其余的.

有谁知道怎么做?

htmlunit

6
推荐指数
1
解决办法
1838
查看次数

HtmlUnit无法登录它在表单提交后返回相同的页面

我试图在HtmlUnit的帮助下登录这个网站,但点击登录后返回相同的页面,输入字段由我无法登录的值填充请建议我解决方案.

我正在尝试下面的代码

        WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
        webClient.getOptions().setJavaScriptEnabled(true);
        webClient.getOptions().setCssEnabled(true);
        webClient.getOptions().setRedirectEnabled(true);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());
        webClient.getCookieManager().setCookiesEnabled(true);

        String url="http://xxxxxxxxx.xxx/";
        String name="XXXX";//here real value i am putting for name, accountNo and pass instead of XXXX
        String accountNo="XXXX";
        String pass="XXXX";

        HtmlPage page = webClient.getPage(url);
        System.out.println("1st page : "+page.asText());

        HtmlForm form=(HtmlForm)page.getElementById("aspnetForm");
        HtmlInput uName=(HtmlInput)form.getByXPath("//*[@id=\"ctl00_LoginControl_textUserName_text\"]").get(0);
        uName.setValueAttribute(name);
        HtmlInput acNo=(HtmlInput)form.getByXPath("//*[@id=\"ctl00_LoginControl_textCompanyAccount_text\"]").get(0);
        acNo.setValueAttribute(accountNo);          
        HtmlPasswordInput password=(HtmlPasswordInput)form.getByXPath("//*[@id=\"ctl00_LoginControl_textPassword\"]").get(0);
        password.setValueAttribute(pass);
        HtmlSubmitInput button = (HtmlSubmitInput) form.getByXPath("//*[@id=\"ctl00_LoginControl_buttonLogin\"]").get(0);

        page = (HtmlPage) button.click();
        System.out.println("2nd Page : "+page.asText());

        webClient.closeAllWindows();
Run Code Online (Sandbox Code Playgroud)

单击登录按钮后,同一页面将返回填充的输入字段.所以请帮帮我.谢谢

java htmlunit

6
推荐指数
1
解决办法
4495
查看次数

HtmlUnit驱动程序不执行JavaScript

我是HtmlUnit的新手,我在登录时遇到了一些麻烦.下面的代码工作得非常好,FireFoxDriver但却失败了HtmlUnitDriver.问题是javascript点击"登录"链接时没有执行;

用于html查看的网站网址:https://fleetworks.trimbletl.com/fleet/start.do

HtmlUnitDriver driver = new HtmlUnitDriver(BrowserVersion.CHROME_16);
driver.setJavascriptEnabled(true);
WebDriverWait wait = new WebDriverWait(driver, 10);

driver.get(fleetWorkURL);

WebElement usernameElement = driver.findElement(By.name("j_username"));
usernameElement.sendKeys(username);

WebElement passwordElement = driver.findElement(By.name("j_password"));
passwordElement.sendKeys(password);

WebElement loginButtonElement = driver.findElement(By.linkText("Log in"));
loginButtonElement.click();

wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("headerFrame"));
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

    13, 2013 2:47:54 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
    WARNING: Obsolete content type encountered: 'text/javascript'.
    13, 2013 2:47:54 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
    WARNING: Obsolete content type encountered: 'text/javascript'.
    13, 2013 2:47:55 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
    WARNING: Obsolete content type encountered: 'text/javascript'.
   2013 2:47:56 …
Run Code Online (Sandbox Code Playgroud)

selenium htmlunit selenium-webdriver

6
推荐指数
1
解决办法
1854
查看次数

Selenium HtmlUnitDriver在随机位置随机挂起

我使用SeleniumHQ记录我的动作,然后将它们导出到Java Unity WebDrive.然后我编辑了导出的代码并添加了许多额外的东西,比如循环数组,时间戳等.

我的代码如下:

  1. 登录我的网站.
  2. 转到我的个人资料.
  3. 删除我以前的公告.
  4. 发布新公告.
  5. 登出.

我尝试过使用FirefoxDriverHtmlUnitDriver,但是每一个都给了我这个奇怪的问题.我的代码开始做它的工作并随机停留在随机点并永远挂在那里.

例如,它可以登录 - >转到配置文件 - >删除先前然后停止,或者它可以挂在登录中.我一遍又一遍地循环这些步骤,更多的循环更可能是卡住了.

第一循环成功率是90%,第二循环是40%左右等.Driver我使用的也影响了这一点.它最有可能挂起,HtmlUnitDriver我真的想要使用,HtmlUnitDrive因为我想在Ubuntu Server上运行我的代码无头.

还有其他人有类似的问题吗?

编辑:经过几个小时的测试,我注意到它只有HtmlUnitDriver挂起而不是Firefox.使用Firefox时,我可以看到它正在做什么,它正在做所有应有的事情.出现问题HtmlUnitDriver.

这是代码本身:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import org.openqa.selenium.*;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

public class WebUpdater {

    private WebDriver driver;
    private String baseUrl;
    private boolean acceptNextAlert = true;
    private StringBuffer verificationErrors = new StringBuffer();

    @Before
    public void setUp() throws …
Run Code Online (Sandbox Code Playgroud)

java selenium htmlunit

6
推荐指数
1
解决办法
2117
查看次数

使用HtmlUnit进行抓取时出现OutOfMemoryError

我正在使用HtmlUnit登录到一个站点,然后从表中下载数据

当我运行我的代码是导致java.lang.OutOfMemoryError并且无法进一步运行.

以下是我的代码:

WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_6);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setRedirectEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
                            webClient.getOptions().setPrintContentOnFailingStatusCode(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
webClient.getOptions().setTimeout(50000);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setPopupBlockerEnabled(true);

HtmlPage htmlPage=webClient.getPage(url);
Thread.sleep(200);
                            //~~~~~~~Log-In
HtmlTextInput uname=(HtmlTextInput)htmlPage.getFirstByXPath("//*[@id=\"username\"]");
uname.setValueAttribute("xxx");
HtmlPasswordInput upass=(HtmlPasswordInput)htmlPage.getFirstByXPath("//*[@id=\"password\"]");
upass.setValueAttribute("xxx");
HtmlSubmitInput submit=(HtmlSubmitInput)htmlPage.getFirstByXPath("//*[@id=\"login-button\"]/input");
htmlPage=(HtmlPage) submit.click();
Thread.sleep(200);
webClient.waitForBackgroundJavaScript(10000);
for (int i = 0; i < 250; i++) {
 if (!htmlPage.asText().contains("Loading...")) {
     break;
  }
    synchronized (htmlPage) {
     htmlPage.wait(500);
 }
}

System.out.println(htmlPage.asText());
Run Code Online (Sandbox Code Playgroud)

以下是stackTrace

java.lang.OutOfMemoryError: Java heap space
at net.sourceforge.htmlunit.corejs.javascript.Node.newString(Node.java:155)
at net.sourceforge.htmlunit.corejs.javascript.Node.newString(Node.java:151)
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.createPropertyGet(IRFactory.java:1990)
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformPropertyGet(IRFactory.java:968)
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:106)
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformPropertyGet(IRFactory.java:964)
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transform(IRFactory.java:106)
at net.sourceforge.htmlunit.corejs.javascript.IRFactory.transformPropertyGet(IRFactory.java:964)
at …
Run Code Online (Sandbox Code Playgroud)

java htmlunit web-scraping tomcat7

6
推荐指数
1
解决办法
958
查看次数

调用站点 #4 bootstrap 方法的异常。代码在 Android Studio 中不起作用,但在 Eclipse 中有效

我正在编写代码以使用 HtmlUnit 登录网站。它一直在 eclipse 中工作,但现在我决定将它移到 Android studio 中在应用程序中使用它。我有2个问题。

  1. 为什么 HtmlUnit 需要 API 26,对于现在的技术来说已经非常高了(只有 19% 的用户),但它只是一个网络模拟器?

  2. 为什么在创建 webClient 时会出现此错误?我的例外是:

java.lang.BootstrapMethodError: Exception from call site #4 bootstrap method
    at com.gargoylesoftware.htmlunit.WebClient.addDefaultHeaders(WebClient.java:1496)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1392)
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1321)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:394)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:315)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:466)
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:448)
    at notas.com.mistarapp.Student.login(Student.java:65)
Run Code Online (Sandbox Code Playgroud)

这是我正在经历的代码。所有内容都已导入,并且不会突出显示为错误。这是我的代码:

try (final WebClient webClient = new WebClient(BrowserVersion.CHROME)) {

    HtmlPage firstPage = webClient.getPage(link);

    // waitForBackgroundJavaScript has to be called after every action
    webClient.waitForBackgroundJavaScript(100);

    System.out.println("Access to the login page is made.");
    System.out.println("-------------------------------------------------------------------------------");

    // Get the form that we are …
Run Code Online (Sandbox Code Playgroud)

java android htmlunit

6
推荐指数
1
解决办法
3591
查看次数