Python+Selenuim Web自动化框架学习笔记

Seleuim的学习笔记

打开浏览器进入百度搜索seleuim

常用元素定位方式

By.ID

By.CLASS_NAME

By.TAG_NAME

By.NAME

By.LINK_TEXT(用来定位可点击文本标签)

By.PARTIAL_LINK_TEXT(用来定位可点击文本标签)

通过ID元素定位

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
#打开浏览器
driver = webdriver.Chrome()
#浏览器最大化
driver.maximize_window()
#进入URL网址
driver.get("https:/www.baidu.com")
#找到搜索框并且输入seleuim
element = driver.find_element(By.ID, "kw")
element.send_keys("selenuim")
#找到搜索按钮并且点击
driver.find_element(By.ID,"su").click()
#页面停止8秒
time.sleep(8)
#关闭浏览器
driver.quit()

补充:pycharm快捷键(快速创建变量名:Ctrl+Alt+v;跳转到指定函数:Ctrl+鼠标点击函数名;注释:Ctrl+Alt+L;)

Ctrl+F (find by string ,Xpath,Selector)

通过CLASS_NAME元素定位

from selenium import webdriver
​
from selenium.webdriver.common.by import By
​
driver = webdriver.Chrome()
driver.get("https://bilibili.com")
# 用CLASS_NAME元素定位
driver.find_element(By.CLASS_NAME, 'nav-search-input').send_keys('软件测试小白')
driver.find_element(By.CLASS_NAME, 'nav-search-btn').click()
​
# 当有多个CLASS_NAME时可以直接用find_element(),则默认为第一个
driver.find_element(By.CLASS_NAME, 'channel-link').click()
# 或者用find_elements()[下标]来定位找到
driver.find_elements (By.CLASS_NAME, 'channel-link')[4].click()

通过SCC_SELECTOR定位

当一个元素无法直接定位,也就是没有id,name等确定标识,这个时候我们需要考虑使用css_selector定位器。他是一种通过CSS样式选择器来定位元素的方法

import time
​
from selenium import webdriver
from selenium.webdriver.common.by import By
​
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
# 根据ID定位
# driver.find_element(By.CSS_SELECTOR, "#kw").send_keys("软件测试")
# driver.find_element(By.CSS_SELECTOR, "#su").click()
# 根据class属性值定位
# driver.find_element(By.CSS_SELECTOR, ".nav-search-input").send_keys("软件测试")
# 根据name属性值定位
# driver.find_element(By.CSS_SELECTOR, "[name:'wd']").send_keys("selenuim")
# 根据标签属性值定位
# driver.find_element(By.CLASS_NAME, "a[herf='http://image.baidu.com/']").click()
# 模糊匹配-包含
# driver.find_element(By.CSS_SELECTOR, "a[herf*='image.baidu.com']").click()
# 模糊匹配-开头
# driver.find_element(By.CSS_SELECTOR, "a[herf^='http://image.baidu']").click()
# 模糊匹配-结尾
# driver.find_element(By.CLASS_NAME, "a[herf$='image.baidu.com/']")
# 组合定位
# driver.find_element(By.CSS_SELECTOR, "input.s_ipt").send_keys("selenuim")
# 定位子元素
# driver.find_element(By.CSS_SELECTOR, "div#s-top-left>a").click()
# driver.find_element(By.CSS_SELECTOR, "#s-top-left>a").click()
# driver.find_element(By.CSS_SELECTOR, "div.s-top-left-new.s-isindex-wrap>a").click()
# driver.find_element(By.CSS_SELECTOR, "div#s-top-left>a:nth-child(3)").click()
# driver.find_elements(By.CSS_SELECTOR,"div#s-top-left>a")[3].click()
driver.find_element(By.CSS_SELECTOR,"div#s-top-left>a:first-child").click()
time.sleep(3)
driver.close()
​

通过XPATH定位

XPATH可以通过相对路径与绝对路径去定位元素,绝对路径从HTML根节点开始算,相对路径从任意节点开始。

说明举例
从根节点开始选取(绝对路径)/html/div/
从任意节点开始选取(相对路径)//div,列举出所有div标签
选取当前节点的父节点//imput/..会选取imput的父节点
选取属性,或者根据属性选取
使用id属性定位//div[@id='id_value']
使用class属性定位//a[@class='manv']
使用name属性定位//div[@name='wd']
多个属性定位//input[@name='wd' and @class='s_ipt']
第n个属性,使用index定位//div[@id='s-top-left']/a[3]
最后一个元素//a@class='mnav'
属性包含某字段//div[contains(@title,'text')]
属性以某字段开头//div[starts-with(@title,'text')]
属性以某字段结尾//div[ends-with(@title,'text')]
文本包含//a[comtains(text(),"网盘")]
文本等于//span[text()=""菜单")]
同级弟弟元素//div[@id=='id']/following-sibliing::div
同级哥哥元素//div[@id=='id']/preceding-sibliing::div

一个简单的自动化例子

自动打开网址输入账户密码登录新增一条类目。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select
​
driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://sellshop.5istudy.online/sell/user/login_page')
# 输入账号
driver.find_element(By.ID, 'username').send_keys('test1')
# 输入密码
driver.find_element(By.ID, 'password').send_keys('123456')
# 点击登录
driver.find_element(By.XPATH, '//input[@type="submit" and @value="登录"]').click()
# 点击新增
driver.find_element(By.CSS_SELECTOR, 'a[href="/sell/seller/product/index"]').click()
# 输入名称
driver.find_element(By.NAME, 'productName').send_keys("蛋糕")
# 输入价格
driver.find_element(By.NAME, 'productPrice').send_keys("3.4")
# 输入库存
driver.find_element(By.NAME, 'productStock').send_keys(1000)
# 输入描述
driver.find_element(By.NAME, 'productDescription').send_keys('很好吃')
# 输入图片地址
driver.find_element(By.NAME, 'productIcon').send_keys("https://photo.16pic.com/00/19/71/16pic_1971206_b.jpg?imageView2/0/format/jpg")
# 选择类目
select = Select(driver.find_element(By.NAME,'catagoryType'))
select.select_by_value("23")
driver.find_element(By.XPATH,'//button[@type="submit"]').click()
  • 22
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值