2015-06-18 31 views
0

我試圖用selenium WebDriver在網頁上執行javascript方法。我能夠在頁面上執行我自己的腳本,但不能從頁面的HTML中調用該方法。下面是HTML在網頁中使用硒執行javascript WebDriver

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')"); 

回答

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();"); 
+0

我試圖通過JavaScript,然後設置表格的值提交表單,但頁面返回錯誤。目的是自動進行報告下載,而不是測試。現在工作,謝謝! – Kurter21