Selenium自动化(常用代码 / 元素定位)------详细

Selenium自动化

一、搭建环境

已写过,地址是:搭建Selenium自动化环境

二、常用代码

import time
from selenium import webdriver

# 打开浏览器
driver = webdriver.Chrome()
# 在浏览器打开被测项目地址
driver.get('http://www.baidu.com')
# 窗口最大化
driver.maximize_window()
# 窗口最小化
driver.minimize_window()
# 设置宽高
driver.set_window_size(600, 600)
# 回退
driver.back()
# 前进
driver.forward()
# 刷新
driver.refresh()
# 获得标题
print(driver.title)
# 获得当前路径
print(driver.current_url)
# 获得页面代码
print(driver.page_source)
# 截图
time.sleep(3)
driver.get_screenshot_as_file("F:\\11\\a.png")
# 关闭浏览器
driver.close()

三、元素定位

(在百度地址实验)
1、通过id定位元素

driver.find_element_by_id('kw').send_keys("勒布朗詹姆斯")

 
2、Xpath元素定位
通过xpath绝对路径定位

driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys("勒布朗詹姆斯")

通过xpath相对路径定位

driver.find_element_by_xpath('//form/span/input').send_keys("勒布朗詹姆斯")

通过属性定位(* * * * 四颗星

driver.find_element_by_xpath('//input[@autocomplete="off"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//input[@autocomplete="off" and @id="kw"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//input[@autocomplete="off" or @id="kw"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_xpath('//*[@*="off"]').send_keys("勒布朗詹姆斯")

通过部分属性定位
(开头首)

driver.find_element_by_xpath("//a[starts-with(@name, 'ti_trhao']").click()   

(第5位开始到最大,包括第5位)

driver.find_element_by_xpath("//a[substring(@name,5)='rmap']").click()   

(第5位开始到最大,包括第5位)

driver.find_element_by_xpath("//a[contains(@name,'trvide')]").click()   

通过索引定位
(直接复制)

driver.find_element_by_xpath('//*[@id="kw"]').send_keys("勒布朗詹姆斯")  

通过文本定位

driver.find_element_by_xpath("//a[text()='地图']").click()
driver.find_element_by_xpath('//a[contains(text(),"hao")]').click()

 
3、CSS元素定位
绝对路径

driver.find_element_by_css_selector('html body div div div div div form span input').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('html>body>div>div>div>div>div>form>span>input').send_keys("勒布朗詹姆斯")

css样式通过id(#)或者class(.)定位,并且可与标签名组合用

driver.find_element_by_css_selector("#kw").send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('.s_ipt').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('input.s_ipt').send_keys("勒布朗詹姆斯")

css通过属性定位(* * * * 四颗星

driver.find_element_by_css_selector('input[autocomplete="off"]').send_keys("勒布朗詹姆斯")
driver.find_element_by_css_selector('input[autocomplete="off"][id="kw"]').send_keys("勒布朗詹姆斯")

css通过部分属性定位(* * * 三颗星),可以解决动态元素定位不到的场景
( 开头)

driver.find_element_by_css_selector("input[autocomplete ^='of']").send_keys("勒布朗詹姆斯") 

(结尾)

driver.find_element_by_css_selector("input[autocomplete $='ff']").send_keys("勒布朗詹姆斯")

(匹配全部字)

driver.find_element_by_css_selector("input[autocomplete *='of']").send_keys("勒布朗詹姆斯")  

css通过子元素定位(类似于xpath中的索引方法)
(首)

driver.find_element_by_css_selector("div#ul a: first-child").click()  

(尾)

driver.find_element_by_css_selector("div#ul a: last-child").click()  

(下标为2)

driver.find_element_by_css_selector("div#ul a: nth-child(2)").click()  

css通过查找兄弟元素

driver.find_element_by_css_selector("div#ul a+a+a").click()
a_list = driver.find_element_by_css_selector("div#ul a ~a")
for i in a_list:
     print(i, i.text)

总结:定位元素的方式有8种,写法有2种
driver.find_element_by_id()
driver.find_element(By.ID, “”)
              (By.NAME, “”)
              (By.CLASS_NAME, “”)
              (By.TAG_NAME, “”)
              (By.LINK_TEXT, “”)
              (By.PARTIAL_LINK_TEXT, “”)
              (By.XPATH, “”)
              (By.CSS_SELECTOR, “”)


Selenium自动化(常用代码 / 元素定位)------详细_第1张图片
感谢每一个认真阅读我文章的人!!!
如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如果在学习或工作中遇到问题可以直接点击此链接进群询问,群里也会有大神帮忙解答,也可以手动添加群号 743262921 备注222

你可能感兴趣的:(测试,自动化测试,Selenium,软件测试,selenium,web,测试工程师,python)