【Selenium】Selenium自动化入门之CSS定位

  • 达成成就一日双更

上一篇简单地说了八大元素定位,也详细说了xpath定位方式,我也说了用xpath可以解决到一半的元素定位问题,剩下的一半则是可以用css定位解决

下面就让我们来看看这个CSS定位是个什么玩意

此外需要这次知识的视频教程的小伙伴可以点击并输入暗号:CSDN

【appium】appium自动化入门之环境搭建(上)

1.4 CSS 定位语法

前言

大部分人在使用 seleniumcss 定位往往被忽略掉了,其实 css 定位也有它的价值,css定位更快,语法更简洁。

这一篇 css 的定位方法,主要是对比上一篇的 xpath 来的,基本上 xpath 能完成的,css 也可以做到。两篇对比学习,更容易查漏补缺。

1.4.1 css:属性定位

  1. css 可以通过元素的 id、class、标签这三个常规属性直接定位到
  2. 如下是百度输入框的的 html 代码:
<input id="kw" class="s_ipt" type="text" autocomplete="off" maxl
ength="100" name="wd"/>
  1. css 用#号表示 id 属性,如:#kw
  2. css 用.表示 class 属性,如:.s_ipt
  3. css 直接用标签名称,无任何标示符,如:input
# coding:utf-8
from selenium import webderiver
driver = webderiver.Firefox()
driver.get("https://www.baidu.com"# css通过id属性定位
driver.find_element_by_css_selector("#kw").send_keys("测试")
# css通过class属性定位
driver.find_element_by_css_selector(".s_ipt").send_keys("测试")
# css通过标签属性定位
driver.find_element_by_css_selector("input").send_keys("测试")
  1. 需要注意的是,css定位是若没有响应属性,也是会定位不到报错,不过没关系让我们接着看

1.4.2css:其它属性

  1. css 除了可以通过标签、class、id 这三个常规属性定位外,也可以通过其它
    属性定位
  2. 以下是定位其它属性的格式
# coding:utf-8
from selenium import webderiver
driver = webderiver.Firefox()
driver.get("https://www.baidu.com"# css通过name属性定位
driver.find_element_by_css_selector("[name='wd']").send_keys("测试")
# css通过autocomplete属性定位
driver.find_element_by_css_selector("[autocomplet'of']").send_keys("测试")
# css通过type属性定位
driver.find_element_by_css_selector("[type='text']").send_keys("测试")

1.4.3 css:标签

1.css 页可以通过标签与属性的组合来定位元素

# coding:utf-8
from selenium import webderiver
driver = webderiver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_css_selector("input:contains('kw')")
# css通过标签与class属性的组合定位
driver.find_element_by_css_selector("input.s_ipt").send_keys("测试")
# css通过标签与id属性的组合定位
driver.find_element_by_css_selector("input#kw").send_keys("测试")
# css通过标签与其他属性的组合定位
driver.find_element_by_css_selector("input.[id='kw']").send_keys("测试")

1.4.4 css:层级关系

  1. css 也可以用曾经定位,达到和xpath同样的效果
  2. 如 xpath://form[@id=‘form’]/span/input 和
    //form[@class=‘fm’]/span/input 也可以用 css 实现
# coding:utf-8
from selenium import webderiver
driver = webderiver.Firefox()
driver.get("https://www.baidu.com"# css通过层级定位
driver.find_element_by_css_selector("form#form>span>input").send_keys("测试")
# css通过层级定位
driver.find_element_by_css_selector("form .fm>span>input").send_keys("测试")

1.4.5 css:索引

1.以下图为例,跟xpath一样
在这里插入图片描述
2.css 也可以通过索引 option:nth-child(1)来定位子元素,需要注意这点与 xpath 写法用很大差异

# 选择第一个option
driver.find_element_by_css_selector("celect#cn>option:nth-child(1)")click()
# 选择第二个option
driver.find_element_by_css_selector("celect#cn>option:nth-child(2)")click()
...

1.4.6 css:逻辑运算

1.和xpath一样css定位也可以实现逻辑运算,这里和xpath不一样的是需要同事匹配两个属性且无需写 and 关键字

# coding:utf-8
from selenium import webderiver
driver = webderiver.Firefox()
driver.get("https://www.baidu.com")
driver.find_element_by_css_selector("input[id='kw'][name='id']).send_keys('python')"

后话

嗯,这篇好像有点少字数,但是都是技术分享,css定位其实还有更多更强大的定位策略,有兴趣的可以到官方那儿继续深入研究,据官方他们自己的说法:css定位更快,语法更简洁,但是xpath更直观,更好理解一些。

最后的最后点击并输入暗号:CSDN可以领取视频资料哦,辛辛苦苦制作的没人来看吗,呜呜呜> 在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Chaqian/article/details/109564256