Appium 如何判断元素是否存在

韩家公子 · 2015年01月12日 · 最后由 BNN 回复于 2015年01月12日 · 1506 次阅读

如上图,如何判断页面上是否存在” 下载 “这个 textview 呢?

我试了下面的方法,不行

打印 el 结果是:[object Promise]

如果用
if(browser.elementByName("下载") != null){
console.log('element which text is "download" is exist');
}
每次都会打印出那句话

共收到 7 条回复 时间 点赞
try:
    WebDriverWait(dr,30).until(EC.presence_of_element_located((By.NAME,"下载")))
except:
    print "got exception"  
else:  
    print "not exception"

#1 楼 @misnull 不好意思,看不懂是什么意思,我把代码改成了
.then(function(){
try{
WebDriverWait(dr,30).until(EC.presence_of_element_located((By.NAME,"下载")))
}
catch(E){
console.log("got exception");
}
})
这样的结果是把 promise 对象打印出来了,和我的第一个方法是一样的结果。
如何能说明找到了” 下载 “这个 textview 控件呢?
或者说可以取到 textView 的 text,进行字符串比较,比如
var t = driver.elementByXPath(".....").text();
if (t == "下载"){
console.log("find it");
}

目前是这样尝试的,可是 t 还是一个 promise 对象,不是 string

Appium 里的 webdriverwait 不一定能用。
参考一下这个http://testerhome.com/topics/1206

#3 楼 @anikikun 可以用,但是不知道 elementByName 返回的是什么对象,如果找不到元素是不是返回空。换句话说,如何判断是找到了,还是没找到。

#4 楼 @xingjizhao 找不到元素是抛出异常,findElementsByXXX 才是找不到元素时,返回空列表

为什么 find_element_by_id 会直接抛出 nosuchelementExecption,而不是返回一个 null,按这样代码很多地方都要 trycatch

刚试了一下,发现中文的用 elementByName 识别不了

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