gpt4 book ai didi

java - 葫芦-android : Touch fails due to "No elements found" but element was found

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:30 31 4
gpt4 key购买 nike

我正在使用calabash-android-java测试使用 Xamarin 构建的混合应用程序。正如您在下面看到的,我能够查询 DOM 元素,甚至将一些信息记录到控制台,但是当我执行 touch 命令时,无论出于何种原因,都无法再找到该元素。

我查看了 calabash-android-java source code 中的失败点,但是它似乎只是将我的查询传递给脚本引擎,这是我所能接受的。

我只是误解了 touch 命令的使用吗?我认为它应该能够“触摸” anchor 标记,但也许不能?

无论如何,我们将不胜感激任何帮助...我的 Google fu 今天让我失望了。

HTML

<div style="width: 100px">
<a data-role="button" ng-click="submit()" id="loginButton">Log In</a>
</div>

Java

@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 "xxx@xx" logs in with valid credentials(C:/_Workspace/calabash-android-java/calabash-android-java/src/test/resources/features/login.feature:13)

更新:值得注意的是,我可以在控制台模式下使用相同的查询来触摸元素,并且设备会做出相应的响应:

irb(main):023:0> touch("webView css:'#loginButton'")
{
"bonusInformation" => [],
"message" => "",
"success" => true
}

最佳答案

我更新到 clabash android 0.5.1,它有助于更​​好地处理 webelements 上的触摸和设置文本。现在可以更好地处理 Web View (与 calabash android 一致)。

https://github.com/vishnukarthikl/calabash-android-java/issues/3

关于java - 葫芦-android : Touch fails due to "No elements found" but element was found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24086850/

31 4 0
文章推荐: java - 在版本 :prepare only 上运行 Maven 配置文件
文章推荐: asp.net - 获取 .NET 中特定 div 内的控件列表
文章推荐: html - 我需要一个带有禁用元素的 HTML