使用 selenium WebDriver 在网页中执行 javascript
Execute javascript within webpage with selenium WebDriver
我正在尝试使用 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。如何从页面执行 "Search" 功能?
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('fromIssueDate').removeAttribute('readOnly')");
首先你不应该使用 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();");
我正在尝试使用 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。如何从页面执行 "Search" 功能?
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('fromIssueDate').removeAttribute('readOnly')");
首先你不应该使用 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();");