【WebDriver】selenium使用CSS定位页面元素

WebDriver API】如何定位元素 WebDriver属于Selenium体系中设计出来操作浏览器的一套API,站在WebDriver的角度,因为它针对多种编程语言都实现了一遍这套API,所以它可以支持多种编程语言;站在编程语言的角度,WebDriver是Python的一个用于实现Web自动的第三方库。 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素。工具或代码无法像我们测试人... 阅读详情

一、CSS简介

CSS 指层叠样式表 (Cascading Style Sheets)

CSS 选择器参考手册:http://www.w3school.com.cn/cssref/css_selectors.asp



二、定位实例

1、以如下html定位为例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <title> css locate </title>
 </head>
 <body>
  <div class="formdiv">
    <form name="fnfn">
        <input name="username" type="text"></input>
        <input name="password" type="text"></input>
        <input name="continue" type="button"></input>
        <input name="cancel" type="button"></input>
        <input value="SYS123456" name="vid" type="text">
        <input value="ks10cf6d6" name="cid" type="text">
    </form>
    <div class="subdiv">
        <a href="http://www.baidu.com" id="baiduUrl">baidu</a>
        <ul id="recordlist">
            <p>Heading</p>
            <li>Cat</li>
            <li>Dog</li>
            <li>Car</li>
            <li>Goat</li>
        </ul>
    </div>
  </div>
 </body>
</html>
 

2、CSS匹配实例:

cssSelector匹配
css=div<div class="formdiv">
css=div.formdiv<div class="formdiv">
css=#recordlist
css=ul#recordlist
<ul id="recordlist">
css=div.subdiv p<p>Heading</p>
css=div.subdiv>ul>p<p>Heading</p>
css=form+div<div class="subdiv">
css=p+li<li>Cat</li>
css=p~li<li>Cat</li> 得到4个li中的第一个
css=form>input[name=username]<input name="username" type="text"></input>
css=input[name$=id][value^=SYS]<input value="SYS123456" name="vid" type="text">
css=input[value*='SYS']<input value="SYS123456" name="vid" type="text">
css=a:link<a href="http://www.baidu.com">baidu</a>
css=input:first-child<input name="username" type="text"></input>
css=input:last-child<input value="ks10cf6d6" name="cid" type="text">
css=li:nth-child(2)<li>Cat</li> 因为这个li是ul下的第二个元素,所以是child(2)
css=:root<html>
csdn表格不显示边框,所以截个图好看点:



三、XPATH和CSS定位比较

  还是以上面的html为例:

定位方式XPathCSS
标签//divdiv
By id//div[@id='recordlist']div#recordlist
By class//div[@class='subdiv']
//div[contains(@class,'subdiv')]
div.subdiv
By 属性//input[@name='username']input[name=username]
input[name^=user]
input[name$=name]
input[name*=erna]
定位子元素//ul[@id='recordlist']/*
//ul/p
ul#recordlist>*
ul#recordlist>p
定位后代元素//div[@class='subdiv']//pdiv p
By index//li[4] 定位第四个lili:nth-child(5)
By content//li[contains(text(),'Goa')]li contains('Goa') 该方法
已经废弃
根据子元素回溯定位父元素//*[./a[@id='baiduUrl']]
//div[.//p[text()='Heading']]
匹配到:<div class="subdiv">
根据兄弟元素定位//ul[preceding-sibling::a[@id='baiduUrl']]
//ul[preceding-sibling::a[//div[@class='subdiv']/a]]
都匹配到:<ul id="recordlist">
a+ul
a#baiduUrl+ul
匹配到:<ul id="recordlist">
截图如下:


    注意:根据兄弟元素定位时只能从上面的兄弟找下面的兄弟,如:css=p+li,写成li+p是不行的。


可以看到,CSS定位语法比XPath更为简洁、灵活,而且CSS定位的速度还比XPath快,推荐使用CSS定位

XPath定位——基于Google Chrome和Firefox XPath定位,如何获取元素XPath——基于Google Chrome、Firefox 阅读详情

相关推荐

第三章 第二节 基于Python3的Webdriver API——Web页面元素定位

这一节的重要性,上一节最后已经提到,对象(元素)的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要。(本专栏中用到的对象与元素同为一个事物) 一个对象就像是一个人,他会有各种各样的特征(属性),比如我们可以通过一个人的身份证号、姓名或者他的住址找到这个人。那么一个元素也有类似的属性,我们可以通过这种属性特征区别于其它元素的属性来定位这个元素。当然,除了要操作元素时需要定位元素外,有时候我们只是为了获得元素的属性(class 属性,name 属性)、text 或

非攻的博客 1万+

selenium webdriver测试报告

为什么80%的码农都做不了架构师?>>> ...

weixin_34235135的博客 544

WebSelenium页面元素封装错误解决方案

Selenium中,定位页面元素的方法有很多种。包括但不限于ID定位、Name定位、Class Name定位、Tag Name定位、Link Text定位、Partial Link Text定位以及CSS Selector定位和XPath定位。ExpectedConditions类提供了一系列预定义的条件,以便于等待某些事件的发生。一些常见的预期条件如下::元素可点击。:元素存在于DOM中。title_is:页面标题完全匹配给定字符串。:页面标题包含给定字符串。

weixin_29935511的博客 723

Python Selenium CSS 定位方法详解

CSS(Cascading Style Sheets)层叠样式表是一种用来表现HTML或XM等文件样式的计算机语言CSS 使用选择器来为页面元素绑定属性, 这些选择器可以被 selenium 用作另外的定位策略CSS 可以比较灵活选择控件的任意属性, 一般情况下定位速度要比 XPath 快,定位更稳定""":Args::Returns::Raises::Usage:"""""":Args::Returns::Usage:"""

m1992222的博客 4200

Seleniumcss怎么实现元素定位

世界上最远的距离大概就是明明看到一个页面元素站在那里,但是我却定位不到!!

软件测试技术交流分享 413

CSSCSS定位元素

但这样有一个缺点,海报图对于一个网站上很重要的,应该用img标签实现。当一个定位元素的层级设置为负整数时,层级没有标准流的层级高。​ 元素按照标准流布局,所有元素的默认定位是static。方法1:利用background-position来进行。设置绝对定位元素的垂直水平居中。方法2:利用相对定位

kakaai77的博客 2500

seleniumselenium.webdriver.common.by之By的用法

#从selenium.webdriver.common.by 导入By包进行元素定位 from selenium.webdriver.common.by import By By是selenium中内置的一个class,在这个class中有各种方法来定位元素 By所支持的定位器的分类: CLASS_NAME = 'class name' CSS_SELECTOR = 'css sele...

白清羽的博客 2万+

抓紧收藏,Selenium无法定位元素的几种解决方案

WebDriver只能在一个页面上对元素识别与定位,对于frame/表单内嵌的页面元素无法直接定位。switch_to.frame()默认可以直接取表单的id或name属性。如果没有可用的id和name属性,可以先定位到frame/iframe,再将定位对象传给switch_to.frame(对象)方法。在页面操作过程中有时候点击某个链接会弹出新窗口,这时就需要切换焦点到新窗口上进行操作。切换到新窗口。首先获取当前窗口的,接着打开弹出新窗口,获得当前打开的所有窗口的句柄。

YLF123456789000的博客 1495

selenium webdriver xpath 定位页面元素

selenium webdriver定位页面元素 selenium-webdriver提供了强大的元素定位方法,支持以下三种方法。 单个对象的定位方法多个对象的定位方法层级定位                          定位单个元素 在定位单个元素时,selenium-webdriver提示了如下一些方法对元素进行定位。         

一HUA一世界的专栏 3642

使用selenium+webdriver定位页面元素常见的方法

安装seleniumwebdriver驱动器 1.安装selenium selenium是python的一个第三方库,可以直接安装,下面介绍两种安装方法: 第一种方法使用pip命令安装,打开计算机运行窗口(win+r),输入以下指令即可安装: pip install selenium 第二种方法在pycharmd的File>Settings菜单下安装,python interpret下是一些已经安装好的库 点击+号,搜索要安装的库,点击左下角install package就可以安装。 2.下载驱动

foxizhuixinggirl的博客 2250

selenium+java二元素定位

页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法。 测试人员应该熟练掌握各种定位方法。 使用最简单,最稳定的定位方法。 自动化测试步骤 定位元素》操作元素》验证操作结果》记录测试结果 在自动化测试过程中, 测试程序通常的操作页面元素步骤 1. 找到Web的页面元素,并赋予到一个存储对象中 (WebElement) 2. 对...

weixin_30659829的博客 169

selenium webdriver定位方式

1、css定位: http://www.w3.org/TR/css3-selectors http://www.w3school.com.cn/css/css_positioning.asp 2、xpath定位: http://www.w3.org/TR/xpath http://www.w3schools.com/xpath/default.asp http://

小丫头 1671

webdriver中元素查找常用方法(全集)

Selenium寻找元素定位 id findElement(by.id(“id”)) name findElement(by.name(“name”)) class_name findElement(by.className(“className”)) linkText driver.findElement(By.linkText("Inbox")); partialLinkText driver

猎摘互联网软件测试业界技术文章专用博客 2677

Selenium WebDriver的简单操作说明

1.打开一个测试浏览器 对浏览器进行操作首先需要打开一个浏览器,接下来才能对浏览器进行操作。   Java代码 import java.io.File;   import org.openqa.selenium.WebDriver; importorg.openqa.selenium.firefox.FirefoxBinary; importorg.openqa.selenium.

Miriam's IT Blog 692

Selenium学习笔记-webDriver API

定位元素 web Driver提供了8种页面元素定位的方式,在此总结: ID HTML规定id属性在文档中必须是唯一的,web Driver提供的id定位就是通过元素的 id属性来查找元素。 比如说我们要获取一下百度的首页的输入框和搜索按键: # coding = utf-8 from selenium import webdriver browser = webdriver.Fir...

mxrrr_sunshine的博客 377

Python-定位网页弹框进行取消、确认操作

利用webdriver进行元素定位(1) 定位网页页面弹框元素 from selenium import webdriver #载入webdriver driver=webdriver.chorme() #打开chorme浏览器 driver.get('www.http.baidu.com') #打开百度浏览器 driver.find_element_by_css_selector('页面元素‘).click() #定位页面元素 sleep(1) #为了防止网络加载慢,导致弹框无...

weixin_37193612的博客 2051

Selenium WebDriver提供By.CSS_SELECTOR定位元素方法

By.CSS_SELECTOR` 是 Selenium WebDriver 提供的一种定位元素的方法,它允许使用 [CSS 选择器]来定位页面上的元素。- 示例:`div > p` 选取所有直接子元素为 div 的 p 元素。- 示例:`h2 + p` 选取紧跟在 h2 元素后的第一个 p 元素。- 示例:`h2 ~ p` 选取紧跟在 h2 元素后的所有 p 元素。- 示例:`div p` 选取所有 div 元素下的 p 元素。- 示例:`p` 选取所有 p 标签的元素。:选择指定元素的所有兄弟元素。

2501_91133390的博客 1153
上一篇: python-环境搭建及自动化测试Demo
下一篇: 【WebDriver】selenium自动化测试入门到进阶 一
灵枢_
博客等级 码龄11年 466粉丝 114原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值