selenium自动化测试:4.webdriverAPI webdriver的使用方法(控制浏览器操作)慢慢更新……

本文详细介绍了Selenium WebDriver API的各种操作,包括定位元素、控制浏览器、执行鼠标和键盘事件、处理验证信息、多窗口切换、警告框处理等。通过这些API,可以实现对浏览器的全面自动化测试。
摘要由CSDN通过智能技术生成

四、webdriverAPI

使用webdriverAPI中的方法实现对浏览器的操作。

4.1 定位元素

定位元素主要有以下八种方法,最后两种比较重要:

  1. find_element_by_id();
  2. find_element_by_name();
  3. find_element_by_class_name();
  4. findelement_by_tag_name();
  5. find_element_by_link_text();
  6. find_element_by_partial_link_text();
  7. find_element_by_xpath();
  8. find_element_by_css_selector()
'''
Created on 2019年11月16日

@author: Yue
@attention: 界面元素定位方法(8种),注意xpath和css_selector定位写法
@note: 1.find_element_by_id();2.find_element_by_name();3.find_element_by_class_name();4.findelement_by_tag_name();5.find_element_by_link_text();6.find_element_by_partial_link_text();7.find_element_by_xpath();8.find_element_by_css_selector()
'''
#coding=UTF-8
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get("http://www.baidu.com")

# 4.1.1_id定位:kw-百度输入框id;su-百度搜索按钮id
browser.find_element_by_id("kw")
browser.find_element_by_id("su")

# 4.1.2_name定位:wd-百度输入框name
browser.find_element_by_name("wd")

# 4.1.3_class定位:s_ipt-百度输入框;;bg sbtn-百度搜索按钮(空格表示类名父子关系)
browser.find_element_by_class_name("s_ipt")
browser.find_element_by_class_name("bg sbtn")

# 4.1.4_tag(标签名)定位:输入框和按钮都是input标签
browser.find_element_by_tag_name("input")

# 4.1.5_link定位:通过链接文字定位
browser.find_element_by_link("新闻")
browser.find_element_by_link("hao123")
browser.find_element_by_link("地图")
browser.find_element_by_link("视频")
browser.find_element_by_link("贴吧")

# 4.1.6_partial_link定位:较长的链接文字,通过部分文字定位
browser.find_element_by_link("一个很长的")
browser.find_element_by_link("文本链接")


# 4.1.7_Xpath定位:~是xml文档定位元素的语言。分别定位输入框和搜索按钮
# 1、tag绝对路径定位
browser.find_element_by_xpath("/html/body/div/div/[2]/div/div/div/form/span/input") #中括号数字表示同级标签的第几个
browser.find_element_by_xpath("/html/body/div/div/[2]/div/div/div/form/span[2]/input")
# 2、元素属性定位
# id属性定位
browser.find_element_by_xpath("//input[@id='kw']") #//表示为当前页面某个目录下;@后接id、class或type等等属性,同样,属性值空格表示层级选择
browser.find_element_by_xpath("//input[@id='su']")
# class属性定位
browser.find_element_by_xpath("//input[@class='wd']") 
browser.find_element_by_xpath("//input[@class='s_ipt']")#也可不指定标签名,用“*”代替,如下一行
browser.find_element_by_xpath("//*[@class='bg s_ipt']")
#层级与属性结合
browser.find_element_by_xpath("//form[@id='form']/span/input")
browser.find_element_by_xpath("//form[@id='for,']/span[2]/input")
# 逻辑运算符and
browser.find_element_by_xpath("//input[@id='kw' and @class='su']/span/input")


# 4.1.8_CSS定位:css可以较为灵活地选择控件的任意属性,一般情况下定位速度要比xpath快。分别定位输入框和搜索按钮
'''
一些css选择器

*    所有元素
.intro    class选择器:类名为intro的所有元素(标签)
#firstname    id选择器:id为firstname的所有元素
span    tag选择器:所有span标签元素
div>input    后代选择器:父元素为div的所有input元素(>和空格一样的效果)
div+input    下一个兄弟选择器:选择和div同级且紧挨的第一个input
[target=_blank]    属性选择器:选择target属性值为_blank的所有元素
div.intor(input)#su    交集选择器:不带空格,和层级选择区分。标签名为div和类名为intro的交集元素,可无限添加交集,通常每个类名或id都带上所属标签(不常用)

'''
# 1、通过class属性定位
browser.find_element_by_css_selector(".s_ipt")
browser.find_element_by_css_selector(".bg s_btn")
# 2、通过id属性定位
browser.find_element_by_css_selector(".#kw")
browser.find_element_by_css_selector("#su")
# 3、通过tag名称定位
browser.find_element_by_css_selector("input")
# 4、通过父子关系定位
browser.find_element_by_css_selector("span > input")
browser.find_element_by_css_selector("form span input")
# 5、通过属性定位
browser.find_element_by_css_selector("[autocomplete = off]")
browser.find_element_by_css_selector("[name = 'kw']")
browser.find_element_by_css_selector('[type = "submit"]')#属性值的引号可加可不加,内外引号的顺序也不要求
# 6、通过组合定位——疑问:属性能否和标签、class、id进行组合???
browser.find_element_by_css_selector("form.fm > span > input.s_ipt")
browser.find_element_by_css_selector("form#form span input#kw")


# 4.1.9_By定位元素:直接使用“find_element()",通过By声明定位方法,传入定位参数。(本质上和前8种是同一种实现,第九种是前八种的底层实现)
browser.find_element(By.ID, "kw")
browser.find_element(By.NAME, "wd")
browser.find_element(By.CLASS_NAME, "s_ipt")
browser.find_element(By.TAG_NAME, "input")
browser.find_element(By.LINK_TEXT, "新闻")
browser.find_element(By.PARTIAL_LINK_TEXT, "新")
browser.find_element(By.XPATH, "//*[@class='bg s_btn']")
browser.find_element(By.CSS_SELECTOR, "span.bg s_btn_wr>input#su")

总结
1、火狐浏览器安装firebug和firepath插件后,右键可以直接复制元素的Xpath;
2、需要多多练习css选择器的使用。

4.2 控制浏览器

1、控制浏览器大小:set_window_size()
2、浏览器前进、后退:forward()、back()
3、模拟浏览器刷新:refresh()

'''
Created on 2019年11月17日

@author: Yue
@attention: 本节东西不多,就是对于浏览器本身的一些控制
@note:
1、控制浏览器大小:set_window_size()
2、浏览器前进、后退:forward()、back()
3、模拟浏览器刷新:refresh()
'''
#coding=UTF-8
from selenium import webdriver
from time import sleep

browser = webdriver.Chrome()

# 4.2.1_设置浏览器大小(单位:px)
print("设置浏览器宽480,高800,显示。")
browser.set_window_size(480,800)
sleep(3)

# 4.2.2_后退、前进
#访问百度首页
first_url = "http://www.baidu.com"
print("now access %s." %(first_url))
browser.get(first_url)
sleep(2)
#访问新闻页面
second_url = "http://news.baidu.com"
print("now access %s" %(second_url
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土小帽软件测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值