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

傅煜 · 2015年01月29日 · 最后由 water 回复于 2015年01月29日 · 2888 次阅读

我用 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 · 2015年01月29日

#3 楼 @weamylady 好强大的 xpath

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

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

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

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

傅煜 #10 · 2015年01月29日 Author

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

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

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

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