测试 APP 搜索的结果是否正确,现通过判断搜索结果列表页的 title 是否为输入的关键字来验证。
结果页的 title 控件的 id 为 normal_title_name,如下图:
通过 find_element_by_name(id) 来取得控件内容:
代码输入为:
title = driver.find_element_by_name(normal_title_name)
print title.text
运行后提示错误:
NameError: name 'normal_title_name' is not defined
改为:
title = driver.find_element_by_name("normal_title_name")
print title.text
也不行
通过 find_element_by_name("红酒") 就可以取到的,但输入的关键字不同,这个内容也会不同,不能写死,ID 是固定的,所以现只想到通过 ID 来获取,然后判断内容是否为输入的。
寻找一个元素的方式,元素标签 (tagname),元素的位置 (xpath),元素的值 (name)。
find_element_by_name/tag_name/xpath.getAttribute("attribute_name")
#2 楼 @532589730 您的意思是要这样写吗
find_element_by_name.getAttribute("normal_title_name")
这样写提示
AttributeError: 'function' object has no attribute 'getAttribute'
#3 楼 @zws20041984 。。。完全不对,你最好先去看下 web driver 相关的文档。
#4 楼 @spikeshen 好的,这块儿完全没接触过,多谢
#3 楼 @zws20041984
忘了说了,是 python,应该是
find_element_by_[name/tag_name/xpath].get_attribute("value")
#6 楼 @532589730 这也不对,找元素的时候没指定条件值
#5 楼 @zws20041984 我一開始也糾結這塊弄了半天。。。後來恍然大悟- - find by id 要是整個 resource-id 裏面的值,而不是單單的 id, try again~ good luck, 而且 by name 的方法不可以放 id 的~要用 by id~
#8 楼 @vincent
确定是写成这样可以获取到了:
title = driver.find_element_by_id("com.dangdang.buy2:id/normal_title_name")
其中遇到个问题,现在想把它的内容打出来,写成 print title.text
这样会报错呢
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
查了一下是 Python 内部的编码问题,改成 print title.text.encode('utf8') 后可正常显示
#10 楼 @zws20041984 2.x 中文會有問題~正常了,反正遇到這樣的都轉碼一下就成了~我一開始用 Py3 的時候正常的,不需要轉碼~
7 楼 @spikeshen
哦,是的,比如说在 ios 中,把页面中名为"Check In"的按钮找到,获取这个按钮的属性"name"值:
当然,"Check In"按钮在这页面中要唯一。
find_element_by_name("Check In").get_attribute("name")
请问下我的怎么没有 resource-id 这一参数呢?
#13 楼 @wangyemami 不是所有的控件都会有 ID,让开发加上去就好了
好的,谢谢。
@vincent 这个 id 是指那个 id?通过 hierachyviewer 查看到的 id 怎么不行啊?
mID id/compose
self.driver.find_element_by_id('id/compose')
报错
NoSuchElementException: Message: u'An element could not be located on the page using the given search parameters.'
@vincent 我用 uiautomatorviewer,但是没 ID 哪一项
设备是 Android 4.2,是不是版本的问题?
另外,我用 hierarchyViewer 找到的 ID 怎么没法使用,用 Monkeyrunner 就可以找到。。。。。。
谢谢~~
#1 楼 @spikeshen 请问一下, 元素的 tag name 如何确定?