我想用Selenium WebDriver中的JavaScript填充網頁上的文本框。一個同事this github在線存儲庫,用於填充文本框以加快速度。WebDriver JavascriptExecutor不能正常工作
當我運行該程序時,它會在((JavascriptExecutor)driver).executeScript("(function(window) { 'use strict';"
處拋出一個錯誤,然後它會遍歷每個文本框,但不會將文本添加到該框中。我的同事和我昨天看了很長一段時間,比較了我們的代碼,並且無法弄清楚什麼是錯誤的。這是我的代碼和它產生的錯誤。
任何幫助表示讚賞。
Java代碼的
InputStream inputStream = ClientInformationComponent.class.getResourceAsStream("AutoFillClientInsuredComponent.js");
StringWriter writer = new StringWriter();
try
{
IOUtils.copy(inputStream, writer, "UTF-8");
}
catch (IOException e)
{
e.printStackTrace();
}
for (ClientDAO client : clients)
{
String script = writer.toString();
try
{
if (driver instanceof JavascriptExecutor)
{
//ERROR IS THROWN HERE webdriver.components.ClientInformationComponent.fill(ClientInformationComponent.java:128)
((JavascriptExecutor)driver).executeScript("(function(window) { 'use strict';"
+ "var lastName = '" + client.getLastName() + "';"
+ "var firstName = '" + client.getFirstName() + "';"
+ "var middleName = '" + client.getMiddleName() + "';"
+ "var suffix = '" + client.getSuffix() + "';"
+ "var streetAddress = '" + client.getMemberAddress() + "';"
+ "var city = '" + client.getMemberCity() + "';"
+ "var zipCode = '" + client.getMemberZipCode() + "';" + "var birthDate = '" + client.getDateOfBirth() + "';"
+ "var homePhoneNumber = '" + client.getHomePhone() + "';"
+ script);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
JavaScript文件
var document = window.document,
fieldValueMap = {
"LastName" : lastName,
"FirstName" : firstName,
"MiddleName" : middleName,
"Suffix" : suffix,
"MemberAddress" : streetAddress,
"MemberCity" : city,
"MemberZipCode" : zipCode,
"MemberZipCodeSuffix" : memberZipCodeSuffix,
"DateOfBirth" : birthDate,
"HomePhone" : homePhoneNumber
};
Object.keys(fieldValueMap).forEach(function(name){
var input = document.querySelector("form input[name='" + name + "']")
|| document.querySelector("form select[name='" + name + "']")
|| document.querySelector("form textarea[name='" + name + "']");
input && input.type !== "hidden" && (input.value = fieldValueMap[ name ]);
});
})(window);
錯誤日誌
org.openqa.selenium.WebDriverException: JavaScript error (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 47 milliseconds
Build info: version: '2.44.0', revision: '76d78cf', time: '2014-10-23 20:02:37'
System info: host: 'COL-ISD-D56345', ip: '10.8.11.30', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_65'
Session ID: 10b4929d-001c-412c-94bc-ce9d006b6dd0
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{platform=WINDOWS, javascriptEnabled=true, elementScrollBehavior=0, ignoreZoomSetting=false, enablePersistentHover=true, ie.ensureCleanSession=false, browserName=internet explorer, enableElementCacheCleanup=true, unexpectedAlertBehaviour=accept, version=9, ie.usePerProcessProxy=false, ignoreProtectedModeSettings=false, cssSelectorsEnabled=true, requireWindowFocus=false, initialBrowserUrl=http://localhost:22000/, handlesAlerts=true, ie.forceCreateProcessApi=false, nativeEvents=true, browserAttachTimeout=0, ie.browserCommandLineSwitches=, takesScreenshot=true}]
Command duration or timeout: 356 milliseconds
Build info: version: '2.44.0', revision: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8', time: '2014-10-23 13:11:40'
System info: host: 'COL-ISD-D56444', ip: '10.8.12.163', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_45'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{browserAttachTimeout=0, enablePersistentHover=true, ie.forceCreateProcessApi=false, ie.usePerProcessProxy=false, ignoreZoomSetting=false, handlesAlerts=true, version=9, platform=WINDOWS, nativeEvents=true, ie.ensureCleanSession=false, elementScrollBehavior=0, webdriver.remote.sessionid=863d35b9-ff0d-4b83-b4e0-983d9272353d, ie.browserCommandLineSwitches=, requireWindowFocus=false, browserName=internet explorer, initialBrowserUrl=http://localhost:22000/, takesScreenshot=true, javascriptEnabled=true, ignoreProtectedModeSettings=false, enableElementCacheCleanup=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=accept}]
Session ID: 863d35b9-ff0d-4b83-b4e0-983d9272353d
你正在使用什麼驅動程序?在本地或網格中運行?生成的JS代碼是否通過linting? – Purus
@Purus Selenium IEDriver 2.44.0它在網格中運行。我在本地機器上執行Java代碼,然後通過網格在虛擬機上運行腳本。我的本地PC是服務器,VM是客戶端。我沒有使用任何特定的linting軟件,但在運行Eclipse時沒有顯示任何錯誤。 – DrZoo