网站首页 > 技术文章 正文
我们继续来讲下页面对象的定位方法,本文主要讲css_selector的定位方法。那么讲css_selector其实和xpath一样,因为很多时候我们要定位的页面对象会没有id、name、class等属性,甚至也无法通过link text的方法定位,所以我们就需要用到css_selector,css_selector对于所有的对象定位都是适用的!1、find_element_by_css_selectorcss_selector定位其实和xpath是类似的,只是写法有一些差异而已,它也有绝对路径和相对路径的定位方法。1)绝对路径绝对路径也是从html根节点开始查找起,
那么我要定位这个输入框css的绝对路径写法如下:一般用两种,第一种(用>来分割层级):
- html>body>div>div>div>form>table>tbody>tr>td>input
复制代码第二种(用空格来分割层级):
- html body div div div form table tbody tr td input
复制代码具体代码实现如下:
- import time
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver.get("http://www.bcbxhome.com")
- time.sleep(5)
- driver.find_element_by_css_selector("html>body>div>div>div>form>table>tbody>tr>td>input")
- driver.find_element_by_css_selector("html body div div div form table tbody tr td input").click()
复制代码2)相对路径比如我们可以看到要定位的输入框是有id的,我们可以直接写标签名称#id属性值
- input#scbar_txt
复制代码那么代码实现:
- import time
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver.get("http://www.bcbxhome.com")
- time.sleep(5)
- driver.find_element_by_css_selector("input#scbar_txt")
复制代码当然你也可以只写#id属性值,不写标签名称,如下:
- #scbar_txt
复制代码如果要定位的控件有class,我们可以直接写标签名称.class属性值
- input.xg1
复制代码那么代码实现:
- import time
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver.get("http://www.bcbxhome.com")
- time.sleep(5)
- driver.find_element_by_css_selector("input.xg1")
复制代码如果要定位的控件既没有id也没有class,那么我们可以通过其他属性定位,方法如下:
- input[name='srchtxt']
复制代码如果一个属性无法唯一确定到此控件,可以通过多个控件组合定位:
- input[value='请输入搜索内容'][type='text']
复制代码当然你要定的控件没有办法直接通过自身的属性定位,可以先定位父级,然后从父级定位到它!
比如要定位input,我们可以先定位到form然后就可以定位到input了
- form#scbar_form>table>tbody>tr>td>input
复制代码当然因为tr下有多个td我们也可以通过nth-child加索引定位到第二个td
- form#scbar_form>table>tbody>tr>td:nth-child(2)>input
复制代码代码实现就非常简单了:
- import time
- from selenium import webdriver
- driver = webdriver.Chrome()
- driver.get("http://www.bcbxhome.com")
- time.sleep(5)
- driver.find_element_by_css_selector("form#scbar_form>table>tbody>tr>td:nth-child(2)>input")
复制代码
猜你喜欢
- 2024-11-25 宽禁带半导体检测加工一站式行业解决方案
- 2024-11-25 快速上手tr命令
- 2024-11-25 TD Securities:维持特许通讯公司(CHTR)为持有评级,目标价为560.00美元
- 2024-11-25 TD Securities:维持特许通讯公司(CHTR)为持有评级,目标价为495.00美元
- 2024-11-25 HTML table表格 固定表头 tbody加滚动条
- 2024-11-25 高达档案0013——提坦斯TR计划,TR-5“加普兰”
- 2024-11-25 TD Securities:上调特许通讯(CHTR)为买入评级,目标价为800.00美元
- 2024-11-25 高考文化体育艺术类词汇
- 2024-11-25 web前端:vue源码解析,vue-cli父子组件传递模板
- 2024-11-25 第16章 万万没想到Django的共享模板是这样的,你想到没?
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-