簡體   English   中英

使用Selenium WebDriver在網頁內執行javascript

[英]Execute javascript within webpage with selenium WebDriver

我正在嘗試使用硒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')");

首先,除非您真的沒有其他選擇,否則不應該使用WebDriver執行javascript。 為什么提交不起作用? 你嘗試了什么? 以我的經驗,有時click並不會觸發表單提交,因此您在form元素上使用了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();");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM