Appium 使用 find_element_by_xpath 方法遇到的一点疑问

傅煜 · January 29, 2015 · Last by water replied at January 29, 2015 · 4478 hits

我用python写了这么一行代码
accountText = driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[1]/UIATextField[1]")
当我用模拟器iPhone5S跑的时候,这行代码是跑的通的,但是当我切换到iPhone6跑的时候,跑到这行代码的时候就报错了,错误原因如下:selenium.common.exceptions.NoSuchElementException: Message: An element could not be located on the page using the given search parameters.
请问,这是为什么?
ios系统:8.1

共收到 12 条回复 时间 点赞

手机和手机有差别嘛。这哪有什么为什么。。。

#1楼 @lihuazhang 但是我用inspector查找元素的时候,这两个的xpath都一样,按理说应该能找到元素才对啊。我想知道是什么导致两个不同结果?

@lihuazhang 恒温,我今天也遇到一个问题,看看你有没有经验?
我需要获取在某些文字后面跟着的数字,例如余额后面的一个金额,我的想法是先试用文字定位到一个元素,然后找到它后面的以0~9开头的一个元素,再获取它的Text,用的Xpath是:

public String getElementNumber(String text){
String xpath = "//*[starts-with(translate(@text,' ',''),'%s') or starts-with(translate(@content-desc,' ',''),'%s') or starts-with(translate(text(),' ',''),'%s')][%s]";
String xpath2 = xpath + "/following::*[starts-with(translate(text(),' ',''), '0') or starts-with(translate(text(),' ',''), '1') or starts-with(translate(text(),' ',''), '2') or starts-with(translate(text(),' ',''), '3') or starts-with(translate(text(),' ',''), '4') or starts-with(translate(text(),' ',''), '5') or starts-with(translate(text(),' ',''), '6') or starts-with(translate(text(),' ',''), '7') or starts-with(translate(text(),' ',''), '8') or starts-with(translate(text(),' ',''), '9')][1]";

System.out.println(String.format(xpath2, text, text,text,1));
return driver.findElementByXPath(String.format(xpath2, text, text,text,1)).getText();
}

问题是定位不到那个数字的元素,求教一下T_T

@monkey,帮忙看看?

#5楼 @link1220 囧TL 复制粘贴几次而已……

@fuyu_nd xpath不行,可以换种方法试试吗? 何必在一棵树上吊死呢、

@weamylady 你的代码太乱了,看得头晕。

#8楼 @beerbox 改了下,现在肿么样?

傅煜 #10 · January 29, 2015 作者

#7楼 @beerbox 因为我这边代码很多都用xpath这个方法的,要是都换,哪换得过来,所以我想找到原因,好做处理

你先获取所有的元素列表看看.

不能用字符串截断加正则来判断吗

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up