Appium 如何點選 UIATableCell 裡面的元件?

Giga · 2014年08月15日 · 最后由 唐僧之妈 回复于 2014年08月15日 · 1753 次阅读

如圖,Cell 中有 Text 跟 Switch,我想 click Switch 改變 status,而不是 click text
Cell 有設 label name 所以可以定位,可是裡面的兩個元件 text 跟 switch 沒有設 label name
例如

wd.findElement(By.name("Setting Ignore Mute Switch"));

請問要怎麼下指令點選 Setting Ignore Mute Switch 這個 cell 裡面的 switch?

共收到 8 条回复 时间 点赞
匿名 #1 · 2014年08月15日

我们这边有一个办法是把 location 的值提取出来,点坐标。。。

Giga #2 · 2014年08月15日 Author

#1 楼 @link1220 可以請問實際上 code 是怎麼寫的嗎?想參考一下,謝謝

匿名 #3 · 2014年08月15日

#2 楼 @gigayaya 基本原理是通过 str = driver.page_source 得到当前页面的源码信息,然后通过正则匹配获取对应 location 坐标,最后通过 click 来点击,参考 webdriver 如下方法
def page_source(self):
"""
Gets the source of the current page.

:Usage:
driver.page_source
"""
return self.execute(Command.GET_PAGE_SOURCE)['value']

Giga #4 · 2014年08月15日 Author

#3 楼 @link1220 感謝你,我研究一下!

匿名 #5 · 2014年08月15日

#4 楼 @gigayaya 不过个人觉得这个方法比较笨拙。。但是也不知道有什么别的方法,或者通过源码把 XPath 路径取回来,再点 xpath,期待大神指导啊~~~

用 XPath,Details 里拉到最下面就有

Giga #7 · 2014年08月15日 Author

#6 楼 @xiaomayi0323 因為 UI 以後可能會改變,用 label name 定位元件才不會每次 UI 改版 script 都要重寫一次

#7 楼 @gigayaya 如果控件位置会变化,XPath 就不好做了,Class name 也不好做

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