自动化测试Selenium(二)

  • Post author:
  • Post category:其他



目录


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


二、元素定位


三、操作测试对象


四、添加等待


五、打印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()



版权声明:本文为qq_43553062原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。