【问题标题】:Execute javascript within webpage with selenium WebDriver使用 selenium WebDriver 在网页中执行 javascript
【发布时间】:2015-09-04 10:04:50
【问题描述】:

我正在尝试使用 selenium WebDriver 在网页上执行 javascript 方法。我能够在页面上执行我自己的脚本,但不能从页面的 HTML 调用该方法。这是HTML

    function Search(){
        if(check(document.forms[0],"searchResults")){
        var fieldCode = "";
        var fieldText = "";

        if((document.forms[0].elements['prrSearchVO.selectedSearchCriteria.prrNumber'].value =="") && (!isPRRNoSelected()))
        {
            alert('PRR No. must be a selected field.');
            unSelectAllOptions(document.forms[0].availableFieldsListArray);
            unSelectAllOptions(document.forms[0].selectedFieldsList);
        }
        else
        {
            document.forms[0].excelRequested.value = "false";
            document.forms[0].action = "prrSearchResults.do";
            document.forms[0].submit();
        }
    }
} 

如果我尝试手动提交表单,它不会正确加载。我可以使用下面的代码执行我自己的 javascript。如何从页面执行“搜索”功能?

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('fromIssueDate').removeAttribute('readOnly')");

【问题讨论】:

    标签: java javascript html selenium webdriver


    【解决方案1】:

    首先,除非您真的别无选择,否则您不应该使用 WebDriver 执行 javascript。为什么提交不起作用?你试过什么?根据我的经验,有时click 不会触发表单提交,因此您可以在表单元素上使用submit。请注意,如果您在非表单元素上submit,则它是无操作的。所以像下面这样的东西应该可以工作,

        WebElement email = driver.findElement(By.id("email"));
        WebElement password = driver.findElement(By.id("password"));
        WebElement submit = driver.findElement(By.id("submit"));
        email.sendKeys("John");
        email.password("foo");
        submit.submit();
    

    回到你原来的问题,Search() 是一个全局函数吗?然后您可以执行以下操作,但是就像我说的,WebDriver 不建议您调用 javascript,因为这不是真实用户与您的应用程序交互的方式

    JavascriptExecutor js = (JavascriptExecutor)driver;
    js.executeScript("window.Search();");
    

    【讨论】:

    • 我尝试通过javascript设置表单的值,然后提交表单,但页面返回错误。目的是自动下载报告,而不是测试。正在工作,谢谢!
    猜你喜欢
    • 2016-01-17
    • 1970-01-01
    • 2016-12-04
    • 2019-06-14
    • 2013-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多