Xamarin으로 구축 된 하이브리드 응용 프로그램을 테스트하기 위해 calabash-android-java을 사용하고 있습니다. 아래에서 볼 수 있듯이 DOM 요소를 쿼리하고 콘솔에 일부 정보를 기록 할 수 있습니다. 그러나 터치 명령을 실행할 때 어떤 이유로 든 요소를 더 이상 찾을 수 없습니다.Calabash-android : "No elements found"로 터치가 실패했지만 요소가 발견되었습니다.
나는 calabash-android-java source code에서 실패한 시점을 살펴 봤지만 스크립팅 엔진으로 내 쿼리를 전달하는 것으로 보인다.
나는 터치 명령의 사용을 오해하고 있습니까? 앵커 태그를 "만질"수 있어야한다고 생각 하겠지만 아마도 그렇지 않을까요?
어쨌든 어떤 도움이라도 대단히 감사하겠습니다 ... 내 Google fu가 오늘 나를 실패했습니다.
HTML
<div style="width: 100px">
<a data-role="button" ng-click="submit()" id="loginButton">Log In</a>
</div>
자바
@When("^user \"(.*?)\" logs in with valid credentials$")
public void user_logs_in_with_valid_credentials(String username) throws Throwable {
UIElement login = app.query("webView css:'#loginButton'").first();
System.out.println("Element_Id=" + login.getId());
System.out.println("Element_Class=" + login.getElementClass());
System.out.println("Element_Query=" + login.getQuery());
System.out.println("Element_Text=" + login.getText());
System.out.println("Element_Enabled=" + login.isEnabled());
Rect rect = login.getRect();
System.out.println("Center_X=" + rect.getCenter_x());
System.out.println("Center_Y=" + rect.getCenter_y());
login.touch();
}
콘솔 출력
Element_Id=loginButton
Element_Class=ui-btn ui-btn-up-c ui-shadow ui-btn-corner-all
Element_Query=webView css:'#loginButton' index:0
Element_Text=
Element_Enabled=false
Center_X=91.98979
Center_Y=308.5714
com.thoughtworks.calabash.android.CalabashException: Failed to touch on: webView css:'#loginButton' index:0. (RuntimeError) No elements found. Query: webView css:'#loginButton' index:0
at com.thoughtworks.calabash.android.CalabashWrapper.touch(CalabashWrapper.java:293)
at com.thoughtworks.calabash.android.UIElement.touch(UIElement.java:196)
at com.mycompany.calabash.LoginStepDefs.user_logs_in_with_valid_credentials(LoginStepDefs.java:41)
at ?.When user "[email protected]" logs in with valid credentials(C:/_Workspace/calabash-android-java/calabash-android-java/src/test/resources/features/login.feature:13)
UPDATE : 그것은 내가 할 때 콘솔 모드에서 동일한 쿼리를 사용하여 요소를 접촉 할 수있어, 장치가 적절하게 응답하는지 주목할 필요가 :
irb(main):023:0> touch("webView css:'#loginButton'")
{
"bonusInformation" => [],
"message" => "",
"success" => true
}