Appium [求助 - iOS]无法点击 webview 里面的链接按钮

Anson · 2014年08月01日 · 最后由 Anson 回复于 2014年08月04日 · 2258 次阅读

这问题发在 Appium GitHub 上几天了,由于时差的问题,Appium 的大神们回答得很慢。
https://github.com/appium/appium/issues/3246
希望在 testerhome 上能有大神帮忙,尽快解决,要不,老大可以就要把 Appium 这工具暂时放弃了 (原因是现在是弄个项目来试水 Appium)。

Appium 版本: 1.2
测试脚本: Java
Java API 版本: java-client 1.6
Mac OS X 版本: 10.9.4
Xcode 版本: 5.1.1

所有的环境应该都是最新版本。

webview 里面的 html 如下,很简单的一个 href 链接 (这东西不知道算不算一个按钮)。

Java 脚本是这样的:

System.out.println(driver.findElements(By.id("login_button")).size()); //size=1
System.out.println(driver.findElement(By.id("login_button")).isDisplayed()) ; //true
System.out.println(driver.findElement(By.id("login_button")).isEnabled()); //true

driver.findElements(By.className("btnType2 loginBtn")).click(); //nothing happen.
driver.findElements(By.id("login_button")).click(); //nothing happen.
driver.findElements(By.linkText("Login")).click(); //nothing happen.

Appium 的大神说添加下面:

capabilities.setCapability("nativeWebTap", true);

添加后没效果,大神说添加没有生效。
我提供了完整的 Appium Log,现在大神还没进一步的回答。

请求大神们帮忙。
谢谢。

共收到 6 条回复 时间 点赞

这里的定位显然生效了,很奇怪你这里为什么偏爱 findelements,何不试试 findelement,而且 classname 只要写一个就 ok 了,css 中 class 也是可以继承的,但你这里应该只要写 loginbtn 就 Ok

html 代码中超链接的 href 属性为 #,那么看来是通过 js 绑定事件来做业务动作,而不是跳转,那么首先要确认的就是 js 绑定的事件是否为 click 事件,因为在移动 web 应用中有些 js 是专为移动开发的,绑定的事件可能是触摸事件

#1 楼 @qddegtya
用 findelements 是想知道有没有其他的同名 element。
是我的脚本写错了。

#2 楼 @umbrella1978
是的,是通过 js 绑定事件来做业务动作,刚才找了开发的,看了下 js 源码,这个绑定的 js 动作是 click 事件。

问题已解决,js 的脚本不能单纯地用 webdriver 方法处理。
如下:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("window.document.getElementById('login_button').click()");

#2 楼 @umbrella1978
谢谢提示。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册