优秀的编程知识分享平台

网站首页 > 技术文章 正文

UI自动化测试Selenium—css与xpath有什么区别?

nanyue 2024-11-14 16:47:05 技术文章 1 ℃

UI自动化测试

Selenium是非常优秀的WEB(UI)自动化测试框架

最新的版本是Selenium4.x。

Selenium支持主流的浏览器自动化测试,具体是Chrome,IE,Firefox等浏览器Selenium也是支持主流的开发语言,如Python,Java,Net,PHP

Selenium IDE

Selenium 1.0

WebDriver

Selenium=WevbDriver+Selenium

搭建:

1、安装Selenium的库,

pip3 install selenium

2、安装Chrome浏览器

https://www.google.cn/chrome/index.html

3、安装Chrome浏览器的驱动

A、查看Chrome浏览器版本

B、到淘宝源下载与浏览器版本匹配的Driver

https://registry.npmmirror.com/binary.html?path=chromedriver/

C、下载成功后,进行解压,并且是一管理员身份执行

D、把这个driver放到Python的安装目录下


from selenium import webdriver
import time

# 对webdrive进行实例化,指定测试的浏览器
driver=webdriver.Chrome()
# 导航到被测试的网址
driver.get('http://www.baidu.com')
time.sleep(3)
# 退出浏览器
driver.quit()
元素属性
import time

from selenium import webdriver
from selenium.webdriver.common.by import  By
'''
webdriver之所以能够操作浏览器,是因为它首先需要定位到被操作的元素属性,然后就可以对浏览器做各种操作。
元素定位的方法:
ID = "id"   ID是不能唯一的
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
'''

# id元素属性
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_id('kw').send_keys("阿六君")
# time.sleep(3)
# driver.quit()

# name的元素属性
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_name('wd').send_keys("阿六君")
# time.sleep(3)
# driver.quit()


# class_name的元素属性

# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_class_name('s_ipt').send_keys("阿六君")
# time.sleep(3)
# driver.quit()


'''
css和xpath:
当你使用id,name,class_name都定位不到时候,这个时候考虑使用css  or  xpath

'''
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys("阿六君")
# time.sleep(3)
# driver.quit()


# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys("段舒元")
# time.sleep(3)
# driver.quit()

获取xpath方法

Xpath与 fullXpath性质一样


# css

# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# driver.find_element_by_css_selector('#kw').send_keys("段舒元")
# time.sleep(3)
# driver.quit()

获取css


获取css

css与xpath的区别

css选择 是依据页面的数据样式定位的, 有标签选择, 类选择, id选择, 或者他们的交并集, 除此之外没有其他的辅助元素了

xpath 是路径表达式,所有元素和内容都可以成为路径的一部分. 两种定位方式功能基本一致, 但是xpath明显更强大, 只是xpath写起来较复杂,css写起来容易些



'''
LINK_TEXT   :超链接
PARTIAL_LINK_TEXT:也是处理超链接,但是模糊搜索

'''
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # click():点击
# driver.find_element_by_link_text('新闻').click()
# time.sleep(3)
# driver.quit()
#
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # click():点击
# driver.find_element_by_partial_link_text('闻').click()
# time.sleep(3)
# driver.quit()



'''
元素定位的分类:
1、单个元素定位
2、多个元素定位,多个元素定位指的是元素的属性都一致,那么这个时候它返回的是列表,可以根据列表的索引来定位元素属性
3、不管是单个元素定位还是多个元素定位,它的方法都是8种,具体就是:



'''
# tagNmae
# driver=webdriver.Chrome()
# driver.get('http://www.baidu.com')
# # send_keys()-->输入的意思
# # driver.find_element_by_tag_name('input').send_keys("阿六君")
# tags=driver.find_elements_by_tag_name('input')
# # print(type(tags))
# # for item in tags:
# #     print(item)
# tags[7].send_keys('阿六君')
# time.sleep(3)
# driver.quit()

'''实战'''
# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# driver.find_element_by_id('freename').send_keys('alj')
# time.sleep(3)
# driver.find_element_by_id('freepassword').send_keys('987')
# time.sleep(3)
# driver.find_element_by_class_name('loginBtn').click()
# time.sleep(5)
# driver.quit()


'''获取测试的地址'''
# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# print(driver.current_url)
# # assert是Python原生的断言方法
# assert driver.current_url.endswith('sina.com.cn/')
# driver.quit()
#
'''获取当前页面代码'''
# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# print(driver.page_source)
# driver.quit()


'''获取页面的title'''

# driver=webdriver.Chrome()
# driver.get('https://mail.sina.com.cn/')
# print(driver.title)
# assert driver.title=='新浪邮箱'
# driver.quit()

'''页面的前进与后退'''
# driver=webdriver.Chrome()
# # 浏览器最大化
# driver.get('https://www.bing.com/')
# time.sleep(3)
# driver.get('http://www.baidu.com')
# time.sleep(3)
# # back 后退
# driver.back()
# print('当前地址:',driver.current_url)
# time.sleep(3)
# # forward 前进
# driver.forward()
# print('当前地址:',driver.current_url)
# time.sleep(3)
# driver.quit()


'''
多窗口解决问题思路:
1、先打开当前页面
2、然后获取当前页面放在一个变量中
3、打开新的页面
4、获取所有页面并且放在一个变量中
5、循环所有页面,判断如果不是当前页面,那么就是在新的页面

'''


# driver=webdriver.Chrome()
# # 浏览器最大化
# driver.maximize_window()
# driver.get('https://mail.sina.com.cn/')
# # 然后获取当前页面放在一个变量中
# nowHandle=driver.current_window_handle
# time.sleep(3)
# driver.find_element_by_link_text('注册').click()
# time.sleep(3)
# # 获取所有页面并且放在一个变量中
# allHandlers=driver.window_handles
# # 循环所有页面,判断如果不是当前页面,那么就是在新的页面
# for handler in allHandlers:
#     if handler!=nowHandle:
#         # 从当前页面切换到新的页面
#         driver.switch_to.window(handler)
#         driver.find_element_by_name('email').send_keys('aliujun')
#         time.sleep(5)
#         # 关闭浏览器
#         driver.close()
# # 切换到原来的页面
# driver.switch_to.window(nowHandle)
# time.sleep(5)
# driver.find_element_by_id('freename').send_keys('aliujun')
# time.sleep(5)
# driver.quit()



'''clear():清空'''
#
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('http://www.baidu.com')
# so=driver.find_element_by_id('kw')
# so.send_keys('阿六君')
# time.sleep(3)
# so.clear()
# time.sleep(3)
# driver.quit()


'''get_attribute()的方法是获取元素属性的值'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('http://www.baidu.com')
so=driver.find_element_by_id('kw')
so.send_keys('阿六君')
time.sleep(3)
print(so.get_attribute('value'))
driver.quit()

好了今天的分享就到这里了,喜欢的可以关注我哟。

Tags:

最近发表
标签列表