selenium

一、selenium

  1、什么是ui自动化?(ui:就是界面设计页面)

    用过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。

  2、ui自动化的优点?

    1、解决重复性的功能测试和验证

    2、减少测试人员在回归测试时用例漏测和验证点的漏测

    3、减少冒烟测试,回归测试的人力成本,节省时间,提高测试效率

  3、ui自动化的缺点?

    1、需求不稳定,比如,敏捷开发速度快,ui频繁变革,定位不稳定,提高了用例维护的成功

    2、用例熟料的覆盖率,占用例总数的20%-30%

    3、场景覆盖占当前功能场景78%-80%

  4、ui自动化和功能测试哪个重要?

    都重要,先功能测试成功,在进行ui测试。

    功能测试是基础,在熟悉功能的前提下才能做好ui自动化

二、selenuim的使用

from selenium import webdriver  #调用自动化文件
from time import *    #调用时间文件
driver=webdriver.Chrome()  #用谷歌浏览器运行
driver.get("http://gz.duoceshi.cn")  #打开网站
sleep(3)  #等待三秒
driver.set_window_size(500,500)  #调整屏幕大小
driver.get_screenshot_as_file("D:\\picture\\jp.png")  #截图
sleep(3)  #等待三秒
driver.maximize_window()  #最大化窗口
driver.close()  #关闭窗口
driver.quit()  #关闭窗口
driver.refresh()  #刷新页面
driver.implicitly_wait(1)  #隐性等待一秒
driver.get("http://www.baidu.com")  #打开百度
sleep(3)  #等待三秒
driver.back()  #退回上一个网页
sleep(3)  #等待三秒
driver.forward()  #前进网页

三、selenuim的定位
# from selenium import webdriver
# from time import *
# driver=webdriver.Chrome()
# driver.get("http://gz.duoceshi.cn")
# sleep(3)
# driver.set_window_size(500,500)
# driver.get_screenshot_as_file("D:\\picture\\jp.png")
# sleep(3)
# driver.maximize_window()
# driver.close()
# driver.quit()
# driver.refresh()
# driver.implicitly_wait(1)
# driver.get("http://www.baidu.com")
# sleep(3)
# driver.back()
# sleep(3)
# driver.forward()

from selenium import webdriver
from time import *
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
sleep(3)
# driver.find_element_by_id("kw").send_keys("我是id定位")
# driver.find_element_by_name("wd").send_keys("我是name定位")
# driver.find_element_by_class_name("s_ipt").send_keys("我是class定位")
# driver.find_element_by_link_text("新闻").click()
# driver.find_element_by_partial_link_text("新").click()
# js="document.getElementById('kw').value='js定位'"
# driver.execute_script(js)
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys("我是xpath定位")
#css定位
# driver.find_element_by_css_selector('#kw').send_keys('性感荷官,在线发牌')
# driver.find_element_by_css_selector('[id="kw"]').send_keys('性感荷官')
# driver.find_element_by_css_selector('.s_ipt').send_keys('性感荷官,在线发牌')
# driver.find_element_by_css_selector('[class="s_ipt"]').send_keys('性感荷官,在线发牌')
# driver.find_element_by_css_selector('[name="wd"]').send_keys("纯欲系美女")
#组合属性的定位
# driver.find_element_by_css_selector("input#kw").send_keys("斗鱼TV")
# driver.find_element_by_css_selector("input.s_ipt").send_keys("虎牙TV")
# driver.find_element_by_css_selector("input[name='wd']").send_keys("斗鱼")
# driver.find_element_by_css_selector("input[id]").send_keys("斗鱼")
#driver.find_element_by_css_selector("[outocomplet=off]").send_keys("斗鱼")
# driver.find_element_by_css_selector("span>input").send_keys("斗鱼")
# driver.find_element_by_css_selector("form>span>input").send_keys("斗鱼")
# driver.find_element_by_css_selector("[][]").send_keys("斗鱼")

 

 

 

 三、实战

 实战案例1(文本框、密码框、点击、输入)

成功登录cms案例(输入账号、密码,点击登录)

from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("http://cms.duoceshi.cn/cms/manage/login.do")
sleep(1)
a.find_element_by_id("userAccount").send_keys("admin")
sleep(1)
a.find_element_by_id("loginPwd").send_keys("123456")
sleep(1)
a.find_element_by_id("online").click()
sleep(1)
a.find_element_by_id("loginBtn").click()
sleep(5)
a.close()

实战案例2(百度输入框和百度按钮)

from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("http://www.baidu.com/")
sleep(1)
a.find_element_by_id("kw").send_keys("杭州西湖")
sleep(1)
a.find_element_by_id("su").click()
sleep(1)
实战案例3(定位百度设置下的高级搜索)
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("http://www.baidu.com/")
sleep(1)
a.find_element_by_id("s-usersetting-top").click()
sleep(1)
a.find_element_by_link_text("高级搜索").click()
sleep(5)
a.close()
实战案例4(通过鼠标悬停来定位百度上的元素)

from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("http://www.baidu.com/")
sleep(1)
s=a.find_element_by_link_text("更多")
ActionChains(a).move_to_element(s).perform()
sleep(1)
a.find_element_by_link_text("网盘").click()
sleep(5)
a.close()

实战案例5(获取文本元素+断言)

1、
from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("http://www.baidu.com/")
sleep(1)
b=a.find_element_by_xpath("//*[@id='u1']/a").text
if b=="登录":
print("OK")
else:
print("NO")

2、
from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("http://www.baidu.com/")
sleep(1)
b=a.find_element_by_id("s-usersetting-top").text
if b=="设置":
print("OK")
else:
print("NO")


实战案例6 assert()方法,断言成功,则程序继续执行,断言失败,则程序报错

from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("http://www.baidu.com/")
assert(a.title=='百度一下,你就知道')
print("3369")


 实战案例7下拉框

from selenium.webdriver.support.ui import Select
from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get("https://www.ctrip.com//")
s=a.find_element_by_id("J_roomCountList")
# Select(s).select_by_index(4)
# Select(s).select_by_value("5")
Select(s).select_by_visible_text("5间")

 
实战案例8alter弹窗

from selenium import webdriver
from time import *
a=webdriver.Chrome()
url=r"D:\我的资料\python\弹窗\alert弹框.html"
a.get(url)
sleep(1)
a.maximize_window()
sleep(1)
alter=a.switch_to.alert
sleep(1)
alter.accept()
sleep(1)
alter.accept()
sleep(3)
a.close()


实战案例9enter弹窗
from selenium import webdriver
from time import *
a=webdriver.Chrome()
e=r"D:\我的资料\python\弹窗\enter.html"
a.get(e)
a.maximize_window()
sleep(1)
a.find_element_by_class_name('alert').click()
sleep(1)
alt=a.switch_to.alert
# alt.accept()
alt.dismiss()
sleep(3)
a.close()


 实战案例10输入性弹窗

 

from selenium import webdriver
from time import *
a=webdriver.Chrome()
url=r"D:\我的资料\python\弹窗\prompt.html"
a.get(url)
a.maximize_window()
sleep(1)
a.find_element_by_class_name('alert').click()
sleep(1)
alter=a.switch_to.alert
alter.send_keys('www.baidu.com')
sleep(1)
alter.accept()
sleep(3)
a.close()

 实战案例11iframe弹窗

 

from selenium import webdriver
from time import *
a=webdriver.Chrome()
url='https://www.jd.com/'
a.get(url)
a.maximize_window()
sleep(1)
a.find_element_by_class_name('link-login').click()
sleep(1)
a.find_element_by_class_name('pdl').click()
sleep(1)
#第一种方法
ifram=a.find_element_by_id('ptlogin_iframe')
a.switch_to.frame(ifram)
#第二种方法索引定位
# a.switch_to.frame(0)
#第三种方法,标题定位
# iframe=a.find_element_by_tag_name("iframe")
# a.switch_to.frame(iframe)
a.find_element_by_class_name('img_out_focus').click()
a.implicitly_wait(1)
sleep(3)
a.find_element_by_class_name('navitems-lk').click()
sleep(3)
a.close()

a.switch_to_default_content() # 回到主页面

 

实战案例12滚动条定位

from selenium import webdriver
from time import *
a=webdriver.Chrome()
url='https://www.jd.com/'
a.get(url)
sleep(1)
a.maximize_window()
sleep(2)
js='window.scrollTo(0,2000)'
a.execute_script(js)
sleep(1)
js1='window.scrollTo(0,0)'
a.execute_script(js1)
sleep(1)
a.close()

实战案例13定期滚动

from selenium import webdriver
from time import *
a=webdriver.Chrome()
url='https://www.jd.com/'
a.get(url)
sleep(1)
a.maximize_window()
sleep(2)
n=0
while n<5000:
n+=500
js='var d=document.documentElement.scrollTop='+str(n)
a.execute_script(js)
sleep(1)
sleep(2)
a.close()

实战案例14模拟键盘操作

from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from time import *
a=webdriver.Chrome()
a.get('http://www.baidu.com')
sleep(1)
a.maximize_window()
sleep(1)
a.find_element_by_id("kw").send_keys('杭州西湖')
sleep(1)
a.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')
sleep(1)
a.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')
sleep(1)
a.find_element_by_id('kw').send_keys(Keys.CONTROL,'v')
sleep(1)

 

实战案例15切换窗口

from selenium import webdriver
from time import *
a=webdriver.Chrome()
url='http://www.baidu.com/'
a.get(url)
print(a.title)
sleep(1)
url2="window.open('http://www.jd.com')"
a.execute_script(url2)
sleep(1)
a.find_element_by_id('kw').send_keys('杭州西湖')
js=a.window_handles
print(js)
for i in js:
a.switch_to.window(i)
if '京东' in a.title:
break
print(a.title)
sleep(2)
a.find_element_by_link_text('你好,请登录').click()
sleep(3)

 

 

 

 

 

 

 

 

 

  

posted @ 2021-01-18 21:05  看破丶红尘  阅读(244)  评论(0)    收藏  举报