自动化测试Selenium(二)

目录

一、先说一个简单的小脚本

二、元素定位

三、操作测试对象

四、添加等待

五、打印title和url

六、浏览器的操作

七、键盘事件


一、先说一个简单的小脚本

# coding = utf-8
from selenium import webdriver
import time
browser = webdriver.Firefox()
time.sleep(3)
browser.get("http://www.baidu.com")
time.sleep(3)
browser.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)
browser.find_element_by_id("su").click()
browser.quit()

1. # coding = utf-8

  • 可有可无,用于设置字符的编码方式。

2. from selenium import webdriver

  • 导入webdriver包,之后我们就可以使用webdriver的方法了。

3. browser = webdriver.Firefox()

  • 设置我们用来进行自动化测试的浏览器,比如Chrome或者Firefox。

4. browser.find_element_by_id("kw").send_keys("selenium")

  • 一个对象可以拥有很多属性,比如id、name等,通过元素检查我们可以发现百度输入框的id叫做kw,然后我们再通过send_keys()方法设置要输入的内容。

5. browser.find_element_by_id("su").click()

  • 通过使用检查元素发现搜索按钮的id叫做su,然后我们再使用click()方法进行点击操作。

6. 关闭当前窗口 :browser.quit()和browser.close()

  • 有两种方式可关闭窗口。browser.quit()用于退出并关闭窗口的每一个相关的驱动程序;另一个是browser.close()用于关闭当前窗口。更推荐使用quit(),因为,quit方法不仅关闭窗口,还会彻底的退出webdriver,释放与driver server之间的连接。

二、元素定位

对象的定位是自动化测试的核心,要想操作一个对象,首先应该识别这个对象。webdriver 提供了一系列的对象定位方法,常用的有以下几种:id、name、class name、link text、partial link text、tag name、xpath、css selector

1. id和name

# coding = utf-8
from selenium import webdriver
import time

driver = webdriver.Firefox()
time.sleep(3)
driver.get("http://www.baidu.com")
time.sleep(3)

driver.find_element_by_id("kw").send_keys("大虞海棠")
time.sleep(3)
driver.find_element_by_id("su").click()

# driver.find_element_by_name("wd").send_keys("大虞海棠")
# time.sleep(3)
# driver.find_element_by_id("su").click()

driver.quit()

2. class name

  • 通过find_element_by_class_name("s_ipt")函数捕获百度输入框
# coding = utf-8
from selenium import webdriver
import time

driver = webdriver.Firefox()
time.sleep(3)
driver.get("http://www.baidu.com")
time.sleep(3)

driver.find_element_by_class_name("s_ipt").send_keys("大虞海棠")
time.sleep(3)
driver.find_elements_by_class_name("bg s_btn").click()

driver.quit()

3. link text

  • 通过文字链接的方式进行访问
#coding=utf-8
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_link_text("hao123").click()
driver.quit()

三、操作测试对象

# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("Ella")
driver.find_element_by_id("su").click()
time.sleep(5)
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("Lisa")
driver.find_element_by_id("su").click()

# driver.find_element_by_id("kw").send_keys("Ella")
# driver.find_element_by_id("su").submit()
# time.sleep(5)
# driver.find_element_by_id("kw").clear()
# driver.find_element_by_id("kw").send_keys("Lisa")
# driver.find_element_by_id("su").submit()

# texts = driver.find_element_by_id("s-bottom-layer-right").text
# print(texts)

time.sleep(5)
driver.quit()

1. click( )

  • 鼠标点击
  • send_keys("xx") 用于在一个输入框里输入具体要输入的内容
  • clear() 用于清除输入框的内容

2. submit( )

  • 提交表单
  • submit和click是一样的效果

3. text( )

  • 用于获取元素的文本信息
  • 使用print()来打印出获得的具体内容

四、添加等待

# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("Ella")
driver.find_element_by_id("su").submit()

#time.sleep(10)
#速度太快,页面未加载出来,所以就无法找到

driver.implicitly_wait(10)
driver.find_element_by_partial_link_text("Ella_百度百科").click()

time.sleep(10)
driver.quit()

1. 固定时间等待

  • 先引入time包,import time
  • 然后使用time.sleep(),在括号中写入需要等待的时间秒数即可

2. 智能等待

  • implicitly_wait() 方法可以方便的实现智能等待
  • 在括号中加上具体秒数,可以实现在一个时间范围内的智能等待

五、打印title和url

# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

title = driver.title
print(title)

url = driver.current_url
print(url)

time.sleep(10)
driver.quit()

六、浏览器的操作

1. 浏览器最大化(maximize_window())与自定义浏览器宽、高(set_window_size())

# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

#浏览器最大化
# time.sleep(10)
# driver.maximize_window()

#固定格式
time.sleep(10)
driver.set_window_size(400, 800)

time.sleep(10)
driver.quit()

2. 浏览器前进(forward())与后退(back())

# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

driver.find_element_by_link_text("新闻").click()
time.sleep(10)
print(driver.title)

# 后退
driver.back()
time.sleep(10)
print(driver.title)

#前进
driver.forward()
print(driver.title)

time.sleep(10)
driver.quit()

3. 给浏览器加上滚动条

# coding = utf-8
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

driver.find_element_by_link_text("新闻").click()
time.sleep(10)
driver.set_window_size(400, 800)
time.sleep(10)

#将页面滚动条拖到底部
js = "var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)
time.sleep(10)
#将滚动条移动到页面的顶部
js="var q=document.documentElement.scrollTop=0"
driver.execute_script(js)

time.sleep(10)
driver.quit()

七、键盘事件

1. 要想调用键盘按键操作需要引入keys 包:
 
from selenium.webdriver.common.keys import Keys

#通过send_keys()调用按键:

send_keys(Keys.TAB) # TAB
send_keys(Keys.ENTER) # 回车

2. 键盘组合键用法

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

#输入框输入内容
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(5)

#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')
time.sleep(5)

#ctrl+x 剪切输入框内容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(5)

#输入框重新输入内容,搜索
driver.find_element_by_id("kw").send_keys("webdriver")
driver.find_element_by_id("su").click()

time.sleep(5)
driver.quit()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值