selenium之定位方式和元素操作

八大定位方式

导包:

  from selenium.webdriver.common.by import By

1、标签 id 属性的定位

ele = driver.find_element(by=By.ID, value="search-input")

2、标签 name 属性的定位

ele = driver.find_element(by="name", value="search-input")

3、需要标签名称的值

ele = driver.find_element(by="tag name", value="input")

 4、定位元素的依据是元素中的class 属性

# class属性值中如果带有空格,意味着它其实是一个组合属性值;所以在使用class name的定位方式的时候,class的属性值,只能接受一个(以属性值中的空格符合 来 区分 属性值);

  5、通过a标签中的文字定位(text属性)

ele = driver.find_element(by=By.LINK_TEXT, value="登录")

 6、link text 的模糊匹配的定位方式,需要a标签中部分 text 属性的值

ele = driver.find_element(by=By.PARTIAL_LINK_TEXT, value="登")

 7、通过css定位

  7.1 绝对路径

 #使用标签名标识层级名称(当前路径名称),使用> 标识下一级
  ele = driver.find_element(by=By.CSS_CELECTOR, value="html>body>div>div>div>form>div>input")

 7.2 相对路径

# 表示 前面有多少路径我都忽略,我从input开始寻找
  ele = driver.find_element(By.CSS_SELECTOR, "input")

7.3 属性过滤

#使用[]标识内部内容为属性的过滤字段
  ele = driver.find_element(By.CSS_SELECTOR, 'html>body>header>div>div>ul>li>a[class="am-dropdown-toggle "]')

8、通过xpath定位

  8.1 绝对路径

#使用标签名标识层级名称(当前路径名称),使用 / 标识下一级
  ele = driver.find_element(by=By.XPATH, value="html/body/div/div/div/form/div/input")

8.2 相对路径

# 表示 前面有多少路径我都忽略,我从input开始寻找
  ele = driver.find_element(By.XPATH, "//input")

8.3 属性过滤

#与css 不同,它需要使用@符号标识属性
  ele = driver.find_element(By.XPATH, '/html/body/header/div/div/ul/li/a[@class="am-dropdown-toggle "]')
  #或者
  ele = driver.find_element(By.XPATH, '//a[@class="am-dropdown-toggle "]')
  # 多属性定位
  driver.find_element(By.XPATH,'//a[@title="tutorial" and @rel="follow"]')
  # xpath模糊匹配的函数有两种: starts-with和和contains
  #1、class属性值以btn开头的label元素
  driver.find_element(By.XPATH,"//label[starts-with(@class,'btn')]")
  #2、通过属性值包含btn的label元素
  driver.find_element(By.XPATH,"//label[contains(@class,'btn')]")
  # xpath通过文本定位元素,文本内容的定位是利用html的text字段进行定位的方法
  driver.find_element(By.XPATH, "//span[text()='下一步']")
  # 文本内容也支持starts-with和contains模糊匹配
  driver.find_element(By.XPATH,"//span[starts-with(text(),下一步')]”)
  driver.find_element(By.XPATH,"//span[contains(text(),'下一步')]")
  ```                    
  xpath常见语法一览表
  表达d 说明 举例
  / 从根节点开始选取 /html/div/span
  // 从任意节点开始选取 //input
  . 选取当前节点
  .. 选取当前节点的父节点 //input/.. 会选取 input 的父节点
  @ 选取属性,或者根据属性选取 //input[@data] 选取具备 data 属性的 input 元素 //@data 选取所有 data 属性
  * 通配符,表示任意节点或任意属性 //*[@name='searchKey'] //*[@*='s_int']"                    
  ```

特殊定位方式

  1、元素对象内定位(父子元素定位)

 from selenium import webdriver
  from selenium.webdriver.common.by import By
   
  # 假设您已经有了一个Selenium WebDriver实例叫做driver
   
  # 定位父元素
  parent_element = driver.find_element(By.XPATH, "//div[@class='parent']")
   
  # 定位子元素相对于父元素的位置
  child_element = parent_element.find_element(By.XPATH, ".//div[@class='child']")
   
  # 现在您可以对子元素执行操作,例如点击
  child_element.click()

 2、多元素定位

 # 返回的是一个list,list中包含的是元素对象
  ele = []
  eles = driver.find_elements(By.XPATH, "//input")

3、网格定位

  参考:https://www.cnblogs.com/rmticocean/p/17966286

  4、下拉列表,要求标签名必须是select的标签

from selenium import webdriver
  from selenium.webdriver.support.ui import Select
   
  # 启动浏览器
  driver = webdriver.Chrome()
   
  # 打开网页
  driver.get("http://www.example.com")
   
  # 定位到下拉列表元素,要求标签名必须是select的标签
  select = Select(driver.find_element_by_id("dropdown"))
   
  # 通过索引选择
  select.select_by_index(0)  # 选择第一个选项
   
  # 通过值选择
  select.select_by_value("value1")
   
  # 通过文本选择
  select.select_by_visible_text("text1")
   
  # 关闭浏览器
  driver.quit()

元素操作

  1、输入操作

ele.send_keys("呵呵")

2、点击操作

 ele.click()

3、截图操作

 # 保存图片到本地
  ele.screenshot('1.png') 

4、获取元素的属性的值

ele.get_attribute('id')

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值