Javascript 无法使用Selenium提交表单
嗨,我目前正试图得到一个脚本,将在一个网站上填写登录详细信息和提交表单,并允许我从下一页收集信息。到目前为止,我已经设法填好了表格,但我无法提交。我已经尝试了。单击按钮并提交(),但都不起作用。所以现在我转向JavaScript来激活按钮。不幸的是,这给了我下面的错误。我曾试图掩盖这个错误,但我可能做错了。有人知道我如何提交表格吗 我认为这是导致代码停止的错误Javascript 无法使用Selenium提交表单,javascript,java,selenium,htmlunit,htmlunit-driver,Javascript,Java,Selenium,Htmlunit,Htmlunit Driver,嗨,我目前正试图得到一个脚本,将在一个网站上填写登录详细信息和提交表单,并允许我从下一页收集信息。到目前为止,我已经设法填好了表格,但我无法提交。我已经尝试了。单击按钮并提交(),但都不起作用。所以现在我转向JavaScript来激活按钮。不幸的是,这给了我下面的错误。我曾试图掩盖这个错误,但我可能做错了。有人知道我如何提交表格吗 我认为这是导致代码停止的错误 WARNING: Obsolete content type encountered: 'application/x-javascrip
WARNING: Obsolete content type encountered: 'application/x-javascript'.
Exception in thread "main" org.openqa.selenium.WebDriverException: com.gargoylesoftware.
htmlunit.ScriptException: ReferenceError: "console" is not
defined. (https://extbasicph05.podc.sl.edst.ibm.com/FFAMobileRelay/js/ion.sound.min.js#2)
这是我的密码
public class Main {
public class MyHtmlUnitDriver extends HtmlUnitDriver {
@Override
protected WebClient modifyWebClient(WebClient client) {
//currently does nothing, but may be changed in future versions
WebClient modifiedClient = super.modifyWebClient(client);
modifiedClient.getOptions().setThrowExceptionOnScriptError(false);
return modifiedClient;
}
}
public static void main(String[] args) {
WebDriver driver = new HtmlUnitDriver(true);
driver.get("url");
WebElement usr = driver.findElement(By.id("username"));
WebElement psd = driver.findElement(By.id("password"));
WebElement btt = driver.findElement(By.id("btnLogin"));
usr.sendKeys("username");
psd.sendKeys("password");
String eventScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('"
+ "click"
+ "', true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('"
+ "onclick"+ "');}";
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript(eventScript, btt);
System.out.println("Page title is: " + driver.getTitle());
}
}
你能让它在真正的浏览器上工作吗,比如Firefox?当我用chrome而不是HTMLUnit运行脚本时,它只需要一个脚本就可以了。单击但不使用Javascript当我使用enter或单击HTMUnit时,它找不到要提交的元素。在这种情况下,JS肯定是错误的选择
HtmlUnitDriver
仅适用于最基本的网站。任何数量的AJAX都是行不通的。如果您需要无头浏览器,请查看或。我昨天在尝试使用HtmlUnitDriver时遇到了类似的问题。问题是,当我将驱动程序与javascript一起使用时,网站上的表单就不同了,因为它识别出我使用的是旧浏览器。当我打开BrowserVersion时,javascript无法工作。因此,我建议尝试另一种无头浏览器,如@SiKing said。你能在真正的浏览器上使用它吗,例如Firefox?当我使用chrome而不是HTMLUnit运行脚本时,只需单击一次即可。单击但不使用Javascript当我使用enter或单击HTMUnit时,它无法找到要提交的元素,JS绝对是错误的选择HtmlUnitDriver
仅适用于最基本的网站。任何数量的AJAX都是行不通的。如果您需要无头浏览器,请查看或。我昨天在尝试使用HtmlUnitDriver时遇到了类似的问题。问题是,当我将驱动程序与javascript一起使用时,网站上的表单就不同了,因为它识别出我使用的是旧浏览器。当我打开BrowserVersion时,javascript无法工作。所以我建议尝试一种不同的无头浏览器,比如@SiKing。