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

136 篇文章 24 订阅
9 篇文章 1 订阅

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, “”)


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值