Web UI自动化中,定位方式的优先级

  • 优先级最高:ID
  • 优先级其次:name
  • 优先级再次:CSS selector
  • 优先级再次:Xpath

针对css selector和xpath的优先级做一个简单的说明

在项目中我们可能用的最多的是css或者xpath,那么针对这两种,我们优先选择css,原因在哪些?

  • 原因1:css是配合html来工作,它实现的原理是匹配对象的原理,而xpath是配合xml工作的,它实现的原理是遍历的原理,所以两者在设计上,css性能更优秀
  • 原因2:语言简洁,明了,相对xpath
  • 原因3:前端开发主要是使用css,不使用xpath,所以在技术上面,我们可以获得帮助的机会非常多

定位元素的注意事项(划重点)

  • 找到待定位元素的唯一属性
  • 如果该元素没有唯一属性,则先找到能被唯一定位到的父元素/子元素/相邻元素,再使用 > , “ “ , + 等进行辅助定位
  • 不要使用随机唯一属性定位
  • 最重要的是多跟研发沟通,尽量把关键元素加上ID或者name,并减少不合理的页面元素,例如重复ID这样的事情最好不要发生

首先,基础的CSS选择器

选择器 名字 例子 例子描述
基础选择器
.class class选择器 .intro 选择 class=”intro” 的所有元素。
#id id选择器 #firstname 选择 id=”firstname” 的所有元素。
* 通配符 选择所有元素。
element 标签选择器 p 选择所有

元素。

多层选择器
element,element 分组选择器 div,p 同时选择所有
元素和所有

元素。

element element 后端选择器 div p 选择
元素内部的所有

元素(包括子元素、孙子元素)

element>element 子元素选择器 div>p 选择
元素下的

子元素

element+element 相邻选择器 div+p 选择
元素之后的所有兄弟

元素。

属性选择器
[attribute] [target] 选择带有 target 属性所有元素。
[attribute=value] [target=_blank] 选择 target=”_blank” 的所有元素。
[attribute~=value] [title~=flower] 选择 title 属性包含单词 “flower” 的所有元素。
[attribute|=value] [lang|=en] 选择 lang 属性值以 “en” 开头的所有元素。

html页面中,css正确写法的栗子

  1. /* id选择器 */
  2. #abc {
  3. color: #cc0000;
  4. font-size: 12px;
  5. }
  6. /* class 选择器 */
  7. .down {
  8. color: #66cc66;
  9. }
  10. /* 标签选择器 */
  11. p {
  12. background: cornflowerblue;
  13. }
  14. /* 标签选择器可以与class选择器组合使用 */
  15. p.down {
  16. font-size: 24px;
  17. }
  18. /* 分组选择器 */
  19. ul,
  20. div,
  21. .up {
  22. color: #cc0000;
  23. }
  24. /* 属性选择器 */
  25. [href] {
  26. color: #cc6600;
  27. }
  28. span[title="hello"] {
  29. color: #00FFFF;
  30. }
  31. span[title~="python"] {
  32. font-size: 24px;
  33. }
  34. /* 后代选择器 */
  35. div li {
  36. background: forestgreen;
  37. }
  38. /* 子元素选择器 */
  39. div[id="up"]>ul {
  40. color: #cc6600;
  41. }
  42. /* 相邻兄弟选择器 */
  43. #down+li {
  44. font-size: 24px;
  45. }
  46. /* 后续兄弟选择器 */
  47. #down~li {
  48. color: #cc0000;
  49. }

然后,伪类选择器

选择器 例子 例子描述
:first-child p:first-child 选择属于父元素的第一个子元素的每个

元素。

:nth-child(n) p:nth-child(2) 选择属于其父元素的第二个子元素的每个

元素。

:nth-last-child(n) p:nth-last-child(2) 同上,从最后一个子元素开始计数。
:nth-of-type(n) p:nth-of-type(2) 选择属于其父元素第二个

元素的每个

元素。

:nth-last-of-type(n) p:nth-last-of-type(2) 同上,但是从最后一个子元素开始计数。
:last-child p:last-child 选择属于其父元素最后一个子元素每个

元素。

转载: https://www.cnblogs.com/poloyy/p/12629662.html