angular UI bootstrap 日期选择器无法使用 JQuery 表达式获取值
angular UI bootstrap datepicker can't get value using JQuery expression
我正在使用 angular UI bootstrap 库中的日期选择器。
https://angular-ui.github.io/bootstrap/#/Datepicker
在 select 日期之后,我无法使用 JQuery 表达式获取输入文本。
$('#effectiveDate').text()
总是返回空的,但我可以看到它在页面上有价值。
我怎样才能检索到这个值?
更新:
在 chrome 控制台中,
$('#effectiveDate') returns:
[<input id="effectiveDate" name="effectiveDate" type="text" class="form-control pickdaterInput ng-valid ng-isolate-scope ng-valid-date ng-dirty ng-valid-parse ng-touched" datepicker-popup="dd-MMMM-yyyy" ng-model="elt.registrationState.effectiveDate" is-open="opened" min-date="minDate" datepicker-options="dateOptions" close-text="Close">]
$('#effectiveDate').text(); returns;
""
angular.element($0).scope().elt.registrationState.effectiveDate returns:
Tue Jul 14 2015 00:00:00 GMT-0400 (Eastern Daylight Time)
但在 Selenium 中:
JavascriptExecutor js = (JavascriptExecutor) driver;
String effectiveDate_string = js.executeScript("angular.element([=17=]).scope().elt.registrationState.effectiveDate.getTime().toString()").toString();
给出错误:
org.openqa.selenium.WebDriverException: unknown error: [=18=] is not defined
(Session info: chrome=43.0.2357.132)
(Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9 milliseconds
您是否尝试在 Chrome (firefox) 中单击实际的输入元素,然后在控制台中键入它?
angular.element([=10=]).val()
还有,你试过这个吗
$('#effectiveDate').val()
而不是这个
$('#effectiveDate').text()
更新
关于评论
this is $('#effectiveDate') returns:
[]
$('#effectiveDate')[0].val()
原因是,当您调用 $('#effectiveDate') 时,您得到的数组只有一个您关心的值,这意味着您必须获得数组的第一项,因此是 [0]。您也可以尝试这样做以获得更多可读性。
$('#effectiveDate').first().val();
我正在使用 angular UI bootstrap 库中的日期选择器。 https://angular-ui.github.io/bootstrap/#/Datepicker
在 select 日期之后,我无法使用 JQuery 表达式获取输入文本。 $('#effectiveDate').text() 总是返回空的,但我可以看到它在页面上有价值。
我怎样才能检索到这个值?
更新: 在 chrome 控制台中,
$('#effectiveDate') returns:
[<input id="effectiveDate" name="effectiveDate" type="text" class="form-control pickdaterInput ng-valid ng-isolate-scope ng-valid-date ng-dirty ng-valid-parse ng-touched" datepicker-popup="dd-MMMM-yyyy" ng-model="elt.registrationState.effectiveDate" is-open="opened" min-date="minDate" datepicker-options="dateOptions" close-text="Close">]
$('#effectiveDate').text(); returns;
""
angular.element($0).scope().elt.registrationState.effectiveDate returns:
Tue Jul 14 2015 00:00:00 GMT-0400 (Eastern Daylight Time)
但在 Selenium 中:
JavascriptExecutor js = (JavascriptExecutor) driver;
String effectiveDate_string = js.executeScript("angular.element([=17=]).scope().elt.registrationState.effectiveDate.getTime().toString()").toString();
给出错误:
org.openqa.selenium.WebDriverException: unknown error: [=18=] is not defined
(Session info: chrome=43.0.2357.132)
(Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 9 milliseconds
您是否尝试在 Chrome (firefox) 中单击实际的输入元素,然后在控制台中键入它?
angular.element([=10=]).val()
还有,你试过这个吗
$('#effectiveDate').val()
而不是这个
$('#effectiveDate').text()
更新
关于评论
this is $('#effectiveDate') returns: []
$('#effectiveDate')[0].val()
原因是,当您调用 $('#effectiveDate') 时,您得到的数组只有一个您关心的值,这意味着您必须获得数组的第一项,因此是 [0]。您也可以尝试这样做以获得更多可读性。
$('#effectiveDate').first().val();