首页 > 其他分享 >Web元素定位

Web元素定位

时间:2023-11-17 13:55:05浏览次数:30  
标签:Web name 定位 元素 class 节点 属性

Web元素定位

分类:ID、Name、Class、Link Text、Partial Link Text、XPath、Css、Tag

1. ID:直接使用:kw

1 <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

2. Name:直接使用:wd

1 <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

3. Class:直接使用:s_ipt

1 <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

3. Class特殊情况,当class值含有多个含有空格字段值时,可以按照如下情况进行获取。
示例网站:https://mail.126.com/

1 <input data-placeholder="邮箱账号或手机号码" name="email" data-type="email" data-loginname="loginEmail" 
data-required="true" class="j-inputtext dlemail j-nameforslide" type="text" autocomplete="off" tabindex="1"
spellcheck="false" id="auto-id-1699855936907" placeholder="邮箱账号或手机号码" style="width: 243px;">
  • 取出其中某一个字段,需要确保唯一性:j-nameforslide
  • 使用css selector:[class='j-inputtext dlemail j-nameforslide']
  • 使用.(.代表class属性)进行连接:.j-inputtext.dlemail.j-nameforslide 或 .j-inputtext.dlemail 或 .j-inputtext.j-nameforslide 或 .j-inputtext 或 .dlemail 或 .j-nameforslide

4. Tag:由于页面包含相同标签可能性极高,因此极少使用tag标签,如果使用:input

1 <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

5. Link Text:只能是超链接标签的文本,直接使用:新闻

1 <a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>

6. Partial Link Text:只能是超链接标签的文本,直接使用:新 或 闻

1 <a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a>

7. XPath:

 

  • 根据属性名定位元素:

定位具有特定属性名的元素://*[@attribute_name]

示例://*[@class] 会匹配所有具有 "class" 属性的元素。

  • 根据属性名和属性值定位元素:如果class含有空格且多个元素时,需要将所有值放入其中。

定位具有特定属性名和属性值的元素://*[@attribute_name='value']

示例://*[@id='myElement'] 会匹配 id 属性值为 "myElement" 的元素。

  • 根据部分属性值定位元素:如果class含有空格且多个元素时,需要将部分值放入其中,即不能包含空格拼接。

定位具有属性值包含特定文本的元素://*[contains(@attribute_name,'value')]

示例://*[contains(@class,'active')] 会匹配 class 属性值包含 "active" 的元素。

  • 根据多个属性进行定位:如果class含有空格且多个元素时,需要将所有值放入其中。

定位具有多个属性及其对应值的元素://*[@attribute_name_1='value_1' and @attribute_name_2='value_2']

示例://*[@class='active' and @data-type='button'] 会匹配同时具有 class 属性值为"active" 和 data-type 属性值为 "button" 的元素

  • 定位符合特定索引的元素:

//tagname[position()]:通过位置索引来定位元素。索引从 1 开始。

示例://ul/li[position() = 3] 可以匹配位于 <ul> 下的第三个 <li> 元素。

  • 使用 not 运算符:

//tagname[not(@attribute='value')]:使用 not 运算符否定一个属性条件,定位不满足该条件的元素。

示例://div[not(@class='header')] 可以匹配class属性不为"header"的div元素,如果对应div标签中不含有class属性时,同时也会被过滤出来。

  • 使用变量传入的两种方式:

"//span[contains(text(),'%s')]" % var
"//span[contains(text(),'" + var + "')]"

  • 根据父节点定位子节点://*[text()='国家']/child::div
  • 根据子节点定位父节点://div[text()='上海']/parent::*/parent::span
  • 根据兄节点定位弟节点,选取当前节点之后的同级节点://*[text()='上海']/following-sibling::span
  • 根据弟节点定位兄节点,取当前节点之前的同级节点://*[text()='上海']/preceding-sibling::span

 

8. Css:

  • 通过id属性定位(#号表示通过id属性定位):#kw
  • 通过class属性定位(.表示通过class属性定位):.s_ipt
  • 通过其他属性定位([]表示通过其他属性定位):[name='wd']
  • id组合属性定位:input#kw 或 *#kw
  • class组合属性定位:input.s_ipt 或 *.kw
  • 其他属性组合定位:input[name='wd']
  • 两个其他属性组合定位:[name='wd'][autocomplete='off']
  • 通过层级定位:form#form>span>input

 

  • 匹配属性值以xx字符串开头的方法:input[class^='s']
  • 匹配属性值以xx字符串结尾的方法:input[class$='ipt']

 

标签:Web,name,定位,元素,class,节点,属性
From: https://www.cnblogs.com/samsun1519/p/17838549.html

相关文章

  • webuploader实现大文件断点续传
    前端代码(基于Yii框架,逻辑可供参考)   <script>    varfileMd5; //文件MD5    varfileObj; //文件对象    varstate='pending'; //状态    WebUploader.Uploader.register({      "before-send":"beforeSend......
  • Long-Time Process on web (ASP.NET Long-Running Operations)
    a)CreatingawebservicethatcallsaThread?b)Creatingawebservicewith[SoapDocumentMethod(OneWay=true)]c)Anybetterway?withoutusinganexternalprogram?Anotherwayisqueuingjobs.MSMQorServiceBroker(SQLServer2005).1.Createajo......
  • js给多个具有相同class的元素绑定同一个事件或者样式
    <buttonclass="btn1">month1</button><buttonclass="btn1">month2</button><buttonclass="btn1">month3</button>若要给上面3个都具有btn1的class的按钮,添加同样的点击事件,则如下操作:$(".btn1").each(function(){......
  • Web服务端开发的线程问题
    Web服务端和线程安全问题 线程和类有关联吗?线程(Thread)和类(Class)在计算机编程中是两个不同但可以关联的概念。线程(Thread):线程是指在进程中执行的独立的执行单元。一个进程可以包含多个线程,它们共享进程的资源,但每个线程有自己的执行流。多线程的编程可以提高程序的并发性,......
  • Websphere - WSVR0605W 错误
    官方连接:https://www.ibm.com/support/pages/wsvr0605w-thread-may-be-hung-message-logsWSVR0605W-"Threadmaybehung"messageinthelogsTroubleshootingProblemAWSVR0605WmessageintheSystemOut.logmightbemisleadingbecausethismessagenorma......
  • web02
    域对象  (域对象通常是指具有属性的对象,也被称为属性对象。)requesthttpSessionsession会话对象session的生命周期第一次向服务器请求获取session会创建session对象;session有一个标识sessionID,tomcat会将这个sessionID以cookie的方式发送给浏览器,浏览器再访问该网站会......
  • JavaWeb--响应字符&字节数据
    Response响应字符数据 //text/html解码html,charset解码汉字response.setContentType("text/html;charset=utf-8");//1、获取字符输入流PrintWriterwriter=response.getWriter();writer.write("你好");writer.write("<h1>124</h1>");响应字节数据添加一个i......
  • 内网走nginx代理访问高德webapi2.0
    需求:客户的电脑都只能访问内,服务器可以访问外网,客户电脑使用的项目中用到了高德webapi2.0。10.200.31.45:32100是我们的web服务器。网上基本上都是对高德webapi1.4的配置方式,而web2.0有一些差别。1.前端修改高德地图的js应用如果是index.html引入,修改之前的应用:<script......
  • JavaWeb--Reaponse设置响应数据功能介绍&完成重定向
    Response设置响应数据功能Response完成重定向重定向(Redirect):一种资源跳转方式*redirect一定地址是8080往后补的,一定要写全也可以是外部地址 路径问题: 动态获取虚拟目录//动态获取虚拟目录StringcontextPath=request.getContextPath();response.sendRedirect(con......
  • @WebServiceClient wsdlLocation 动态给注解内容参数赋值
    动态给注解内容参数赋值@WebServiceClient(name="IXxxService",targetNamespace="http://xxx.xxx.xxx.com",wsdlLocation="${WSDL_URL}")publicclassIXxxServiceextendsService{ //静态变量在静态代码块加载后加载,且注解也在之后加载,完成动态注入修改注解里的参......