UI自动化- senlenium中的元素定位(二)

2021-12-31  本文已影响0人  PeppaTang

目标
1、掌握xpath和CSS元素定位方
2、掌握元素及浏览器操作

1 xpath元素定位

1.1 什么是xpath

总结:xpath是用来在xml文件中进行元素定位的标记语言,html是一种特殊的xml,所以xpath也可以用在html中

1.2 Xpath定位策略

1.2.1 路径定位
# 通过xpath的绝对路径定位用户名输入框并输入admin
driver.find_element_by_xpath("/html/body/div/fieldset/form/p/input").send_keys("admin")
# 等待3S
time.sleep(3)
# 通过xapth的相对路径定位密码输入框并输入123
driver.find_element_by_xpath("//form/p[2]/input").send_keys("123")
1.2.2 元素属性定位
driver.find_elemet_by_xpath("//*[@placehoulder ='请输入用户名']").send_keys('admin')
1.2.3 属性与逻辑结合定位
driver.find_element_by_xpath("//input[@name ='user' and @class= 'login']").sendkeys('admin')
1.2.4 属性与层级结合定位
driver.find_element_by_xpath("//p[@id='p1']/input").send_keys("admin")
1.2.5 XPATH扩展

2、CSS定位

2.1 什么是CSS

总结:css是可以用来在selenium中定位元素的

CSS定位元素的方法: find_element_by_css_selector(css_selector) # css_selector表示的是CSS选择器表达式

2.2 CSS定位策略

2.2.1 id选择器
driver.find_element_by_css_selector('#user').send_keys('admin')
2.2.2 class选择器
driver.find_element_by_css_selector('.email').send_keys('123@qq.com')
2.2.3 元素选择器
2.2.4 属性选择器
driver.find_element_by_css_selector("input").send_keys("admin")
# 通过css的属性选择器定位电子邮箱输入框,输入123@qq.com
driver.find_element_by_css_selector("[class='emailA dzyxA']").send_keys("123@qq.com")
driver.find_element_by_css_selector('.zc #userA').send_keys('admin')
2.2.6CSS扩展
image-20200622150415134.png

4、定位元素的另外一种写法

二、元素操作及浏览器操作方法

1、元素操作

import time
from selenium import webdriver
frome senlenium,webdriver.common.by import By

driver = webdriver.Chrome()
# 打开测试网站
driver.get('' ")
driver.find_element(By.ID,'userA').send_keys('admin')
driver.find_element(By.ID, 'passwordA').send_kes('123456')
driver.find_element(By.XPATH, "//*[@class='emailA dzyxA']").send_keys("123@qq.com")
# 2).间隔3秒,修改电话号码为:18600000000
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, ".telA").clear()
time.sleep(3)
driver.find_element(By.CSS_SELECTOR, ".telA").send_keys("18600000000")

# 等待3S
time.sleep(3)
# 退出
driver.quit()

2、浏览器操作

  1. maximize_window() 最大化浏览器窗口 --> 模拟浏览器最大化按钮 实例化浏览器驱动之后,就可以调用窗口最大化的方法

  2. set_window_size(width, height) 设置浏览器窗口大小 --> 设置浏览器宽、高(像素点)

  3. set_window_position(x, y) 设置浏览器窗口位置 --> 设置浏览器位置

    x,y是一个坐标点,通过此坐标点确定浏览器最左上角的位置,以此确定浏览器在屏幕上的位置。

    x, y不能超过屏幕的分辨率大小

# 导包
import timefrom selenium import webdriver
# 创建浏览器驱动对象
from selenium.webdriver.common.by
 import By
driver = webdriver.Chrome()
# 窗口最大化
driver.maximize_window()
# 打开测试网站
driver.get("file:///D:/software/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/web%E8%87%AA%E5%8A%A8%E5%8C%96%E5%B7%A5%E5%85%B7%E9%9B%86%E5%90%88/pagetest/%E6%B3%A8%E5%86%8CA.html")time.sleep(3)
# 设置窗口大小
driver.set_window_size(500, 500)
time.sleep(3)
# 设置窗口位置
driver.set_window_position(300, 300
)# 等待
3Stime.sleep(3)
# 退出
driver.quit()
  1. back() 后退 --> 模拟浏览器后退按钮
  2. forward() 前进 --> 模拟浏览器前进按钮
  3. refresh() 刷新 --> 模拟浏览器F5刷新
  4. close() 关闭当前窗口 --> 模拟点击浏览器关闭按钮
  5. quit() 关闭浏览器驱动对象 --> 关闭所有程序启动的窗口
driver.back()
driver.forward()
driver.find_element(By.XPATH, "//*[text()='访问 新浪 网站']").click()
driver.close()
driver.quit()
  1. title 获取页面title
  2. current_url 获取当前页面URL

3、获取元素信息

#1. 获取用户名输入框的大小
driver.find_element(By.ID,'userA').size

#2. 获取页面上第一个超链接文本的内容
driver.find_element(By.LINK_TEXT,'新浪').text
#3. 获取第一个超链接的地址
driiver.find_element(By.LINK_TEXT.'新浪').get_attribute('href')

# 4. 判断span元素是否可见,
print(driver.find_element(By.Name, 'sp1').is_dispalyed())

# 判断取消按钮是否可用
print(driver.find_element(By.ID, 'cancelA').is_enabled())

# 判断页面中’旅游‘对应的复选框是否选中状态
print(driver.find_element(By.ID, 'lyA').is_selected())
上一篇 下一篇

猜你喜欢

热点阅读