首页 > 其他分享 >selenium(3)元素定位

selenium(3)元素定位

时间:2024-03-21 19:22:40浏览次数:28  
标签:定位 selenium 元素 driver element 标签 find

元素定位:对于对于 Web 自动化测试来说,就是操作页面上的各种元素,在操作元素之间需要先找到元素,换句话说就是定位元素
Selenium常见的定位元素的8种方法:Id,Name,Classname,LinkText,PartialLinkText,CSSSelector,Xpath。
from selenium import webdriver
from selenium.webdriver.common.by import By
driver=webdriver.Chrome()
#打开对应的网站
driver.get('http://www.huangjinjiage.cn/talk/20211208/13752.html')
driver.find_element(By.ID) #ID定位
driver.find_element(By.NAME)#name定位
driver.find_element(By.XPATH)#Xpath定位
driver.find_element(By.CLASS_NAME)#class定位
driver.find_element(By.LINK_TEXT)#link定位。此种方法是专门用来定位文本链接的
driver.find_element(By.PARTIAL_LINK_TEXT)#partial_link定位。有时候一个超链接的文本很长很长,我们如果全部输入,既麻烦,
#又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了
driver.find_element(By.TAG_NAME)#tag定位
driver.find_element(By.CSS_SELECTOR)#css定位

Xpath定位元素
xpath:path就是路径,类似文件夹Desktop/classnotes/
绝对路径定位:copy xpath (借助谷歌浏览器)
缺点:当页面元素父级元素发生改变,页面元素的位置发生改变时,都需要修改
相对路径定位:以 //开头+标签名 (自己写xpath)
优点:长度和标签开始的位置并不受限制,稳定且万能
看看一些符号的定义
// :表示相对路径 (所以xpath的写法是:以//开头+标签名 )
/.. :表示找上级
/ :表示找下级
@:标签属性定位
() :text的值
* :标签名任意

属性定位:

比如上面"用户名"的文本框的id为:username

写相对路径xpath://input[@id="username"]             //input是标签名 @id="username"是标签属性的名称

或者标签名任意://*[@id="username"]

文本定位:

比如登录按钮的text文本为:登录

写相对路径xpath://button[text()="登录"]          //button是标签名,text()="登录"是文本内容

或者标签名任意://*[text()="登录"]

模糊查询:starts-with

//+标签名[starts-with(@什么属性,'以什么开始')]

//input[starts-with(@type,'pass')]

模糊查询: contains():

表示该元素的属性的值,包含了什么东西

//+标签名[contains(@什么属性,'包含了什么值')]

//input[contains(@type,'ord')]     //input是标签名,@type是属性,ord 是包含的值

 

标签:定位,selenium,元素,driver,element,标签,find
From: https://www.cnblogs.com/cyq0528/p/18088089

相关文章

  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    704.二分查找有顺序2.左右双指针通过中间位大小来判断指针移动难点:边界防止溢出错误:mid=left+(right-left)//2Complexity:O(log(n))classSolution:defsearch(self,nums:List[int],target:int)->int:#sortedlist#binary......
  • selenium(2)浏览器操作
    importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportBydriver=webdriver.Chrome()driver.get('http://www.huangjinjiage.cn/talk/20211208/13752.html')#打开对应的网站driver.maximize_window()#浏览器最大xpath='/html/body/div[3]/......
  • uniapp怎么获取元素高度,获取元素节点信息,获取界面剩余高度
    一、在uniapp项目开发的过程中,常常需要获取元素的高度信息,来更容易的实现元素的布局控制,使用场景:列入动态的计算容器的高度,设置组件的最小高度等等在获取元素节点信息中,通常有两种情况:①获取单个②获取v-for循环元素的节点信息,话不多说,直接上代码注意:需要在onReady()之后获取,否则......
  • uniapp获取定位导致APP闪退
    刚开始用setInterval定时1秒获取地图定位,因为uni.getLocation经常会返回失败,导致整个定时器错乱闪屏崩溃。本页面有一个webview,通过evalJS执行webview嵌套页面的方法。<web-view@message="getMessage"v-if="url":src="url"></web-view> 错误代码:this.time=setInterv......
  • 【Selenium】隐藏元素的定位和操作
    一、selenium中隐藏元素如何定位?如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了但是吧~~~能定位到并不意味着能操作元素(如click,clear,send_keys)二、隐藏元素如下图有个输入框和一个登录的按钮,本来是显示的 元素的属性隐......
  • js实现页面滚动至指定位置
    实现思路:1、通过判断链接是否有某参数,来决定是否展示第二屏页面2、用offset来获取第二屏与文档顶部距离3、用scrollTop将滚动条滚动至第二屏位置if(location.href.indexOf('part')!=-1){$('html,body').animate({scrollTop:$('.bg2').offset().top},800);}一、offs......
  • selenium (1)浏览器驱动
    要想selenium操纵浏览器,必须下载对应浏览器的驱动,以及正确的安装,这里就不详细说明了。 fromseleniumimportwebdriver#driver=webdriver.Chrome()fromseleniumimportwebdriver用于从selenium这个库中导入webdriver模块。这行代码使得你可以在后续的代码中使用webdriv......
  • lc3072 将元素分配到两个数组中2
    给定数组nums[n],定义f(arr,val)表示数组arr中大于val的元素个数,需要操作n次将nums分配到两个数组里,具体如下:第1次操作将nums[1]追加到arr1,第2次操作将nums[2]追加到arr2后续第i次操作:如果f(arr1,nums[i])>f(arr2,nums[i]),则将nums[i]追加到arr1。如果f(arr1,nums[i])<f(a......
  • MySQL中如何快速定位占用CPU过高的SQL
    作为DBA工作中都会遇到过数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。聊聊MySQL中如何快速定位占用CPU过高的SQL。技术人人都可以磨炼,但处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。 以一......
  • 使用 html 页面编辑精确定位文本文件选中
    如下是一个实例,实现了文本的换行,选中以及滚动到选中文本位置的功能?<htmlstyle='height:100%;'><head><metacharset='UTF-8'/></head><bodystyle='height:100%;padding:0;margin:0;border-width:0;'><divid="cont......