我正在使用来自角度UI引导库的datepicker。
https://angular-ui.github.io/bootstrap/#/Datepicker
选择日期后,我无法使用JQuery表达式获取输入文本。
$('#effectiveDate')。text()
总是返回空,但我可以在页面上看到它的价值。
我该怎么做才能检索该值?
更新:
在Chrome控制台中
$('#effectiveDate')返回:
[<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();返回
""
angular.element($ 0).scope()。elt.registrationState.effectiveDate返回:
Tue Jul 14 2015 00:00:00 GMT-0400 (Eastern Daylight Time)
但在硒中:
JavascriptExecutor js = (JavascriptExecutor) driver;
String effectiveDate_string = js.executeScript("angular.element($0).scope().elt.registrationState.effectiveDate.getTime().toString()").toString();
给出错误:
org.openqa.selenium.WebDriverException: unknown error: $0 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($0).val()
另外,你尝试过
$('#effectiveDate').val()
代替这个
$('#effectiveDate').text()
更新
关于评论
这是$('#effectiveDate')返回:
[]
$('#effectiveDate')[0].val()
原因是,当您调用$('#effectiveDate')时,您得到的数组只包含您关心的一个值,这意味着您必须获取数组的第一项,即[0]。您也可以尝试这样做,以提高可读性。
$('#effectiveDate').first().val();