公司的 iPad App,发现找不到某些 Button,如图。
左下方的"Adhoc Check in"能找到,通过 find_element_by_name('Adhoc Check in')。
红色框住的 button "Sync today application"就找不到 (find_element_by_name('Sync today application')),
请问,是什么原因么?
这是原生, 还是混合 app?
你可以遍历下所有的控件,找找有没有你要的元素。
#1 楼 @seveniruby
不好意思,原生,混合是怎样区分的?
我用 btns = wd.find_element_by_name('button') 去找 button,使用 print len(btns) 却报错了。
所以现在也不知道能找到几个 button。
#2 楼 @532589730 你应该用 tagname 吧。。。
#3 楼 @spikeshen find_elements 才是列表, 才能用 len。 你可以使用 xpath 的//button 获取所有的 button 不过却确保你的元素是 button, 还是其他的东西。
#4 楼 @seveniruby 我觉得他是想找所有的按钮,用 name 就变成是找值为 button 而不是标签的
#5 楼 @spikeshen
不是,是想找 sync 按钮,再 click 这个按键。
之所以用 len 是因为找不到 sync 按钮,想找出所有的 button,再 print 出每个按钮的 text,看看 sync 按钮在不在里面,但我用错了方法,如 seveniruby 所说的,应该用 elements,复数,但我用了单数,所以报错。
使用了 btns = wd.find_elements_by_name('button'),再 print 按钮的 text,发现没有"Sync"的按键文本。
如果使用 tag_name 的话,也是找不到 sync 这个按钮
#6 楼 @532589730 那你试试先找到这个 sync 上层的 view,然后在通过它去找按钮,看看有没有
#7 楼 @spikeshen
是的,我怀疑是不是 adhoc 按钮是在一个 view 里,而 sync 按钮是在另一个 view 里,找 button 时只在 adhoc 的 view 查找,所以找不到 sync 按钮,这只是我的猜测而已。
请问怎样跳到 sync 上层的 view,进而找按钮呢?
谢谢
#8 楼 @532589730 你就先把所有 view 找出来,用 xpath 吧。。靠谱点
#9 楼 @spikeshen
不好意思,在 app 上用 xpath 还不会用,在 firefox 浏览器上使用 firebug+xpath finder 倒是容易定位元素的 xpath。
在 inspector 上可以看到 xpath,现在的问题是,高亮部分不准确。
我先得解决这个问题先。
问题已经解决了。
在 inspector 上看到,原来这个 sync 按钮的 name 是空的,就算是使用 find_element_by_name(""),名为空都找不到,现在使用 xpath 可以找到了。
谢谢各位的帮忙,及谢谢恒温在 qq 解答怎么打开 inspector 的初级问题。
#12 楼 @532589730 你用 tagname 应该也可以找到的
#13 楼 @spikeshen
tag_name 是也可以找到的,但这里的找到现在我还是没转过弯来。
比如说使用 elements 找到所有的按钮,可以通过下标来定位哪个按钮,但如果直接使用 element_by_tag_name 的话,是不是也是 element_by_tag_name('args'),这个 agrs 应该是什么才对?
#14 楼 @532589730 你这样的需求,就需要用 xpath 了。 //button[2] 这种方式
#15 楼 @seveniruby
目前来说,只能是 xpath 了,看了下论坛的元素定位的文檔,说元素定位 3 种方式,by_name, by_tag_name, by_xpath。
并没有其他的,这样的话,如果 name 是空的话,只能是 xpath 一次性精确定位了。
#14 楼 @532589730 args 这个,android 去看所有元素对应的。。。代码,没错,是代码,不是文档。。。https://github.com/appium/appium/blob/master/lib/devices/android/bootstrap/src/io/appium/android/bootstrap/AndroidElementClassMap.java
#17 楼 @spikeshen
谢谢 spikeshen
#18 楼 @532589730 不客气,共同学习成长哈