2016.9.20 automation 总结

2016-09-20  本文已影响54人  流浪骑士

回顾下小本年用selenium, python 做automation的小结吧。
都是些小点点。

  1. 通过获取父类的text值来得到其子类的text值:parent_ele.text 要注意如果某个子元素的text值为空, 获取到的text字符串值不会为空的子元素保留值占位符。
    如下面所示,tr下面总共有三个td,应该获得三个td的值,但是假设第二个td的值为空,那么总共得到的text值长度为二。 所以如果想使用这种方法获取每个td的值的时候要小心。
    举例:
    如下所示,
    print context = row_element.text
    print(len(context.split('\n')))

Console:

11233\n1 day\n
2
java

code:

<tbody>
  <tr>
    <td><b>11322</b> </td>
    <td></div></div> </td>
    <td><div><div>1 day</div></div></td>
  </tr>
</tbody>
  1. 隐藏的元素,虽然是exists的,但是通过text得到的值为空。
  2. 使用selenium 获取的元素的text都是字符串,所以在比较期望的值的时候,注意值的数据类型。
  3. 总结一些定位元素的知识
    若遇到测试对象很多都是用的动态id或者class,或者没有唯一属性可以定位,会为automation带来困难。 所以要学会通过兄弟找到自己或者通过父亲找到自己等一些技巧。

starts-with ,查找指定属性前缀的元素

xpath='//*[starts-with(@id,"reservation")]'

通过父类元素获得子元素 ./

name_xpath = './td[1]'
parent.getElementByXpath(name_xpath)

多个属性来定位元素

xpath='//*[starts-with(@id,"vcacPagingToolbar") and @class="x-box-inner"]/div/div[last()]/../a[3]'

../查找当前元素上级,有兄弟或者子孙定位元素

delete_detail_hidden = '//table[@aria-hidden="true"]//*[text()="Cannot delete reservation policy:"]/../../../tr[2]/td/div'

xpath的谓语

/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。 
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。 
/bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。 

未完待续。。。。

上一篇下一篇

猜你喜欢

热点阅读