找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
""""""
""" 自动化测试:
    其他行业是将人的手工作业转换为机器操作的过程叫做自动化
    软件行业:认为手动测试转换为代码执行的过程叫做自动化测试

    自动化测试的好处:
        减少人力成本的开支,提升项目的工作效率。

    自动化测试需要具备开展的条件:
        1.需求稳定,不会出现频繁的需求变更
        2.项目有充足的时间开展自动化测试。
        3.项目维护周期长
        4.需要测试人员具备一定的代码能力
        5.有频繁的回归测试.--->自动化代码一般用于回归测试
            回归测试:针对bug修复完成之后进行回归。
            发布了一个新功能,针对之前已经稳定的功能进行回归测试,看新的功能
            是否有影响之前的功能
        一般满足三个条件就可以开展,满足1 3 4 条件就具备开展自动化测试
        的条件

    一般在什么阶段开始输出自动化测试脚本?
    1.一般是在验收测试通过之后,产品上线之后,针对cass进行转化为自动化用例
    自动化用例也是通过你的功能测试用例转换的,并不会将你所有的功能测试用例
    都进行转换,因为ui自动化没有异常场景,只做正常场景。

    自动化cass的执行:
        1.一般在回归测试阶段进行执行
        2.定时脚本任务运行


    自动化测试用例的覆盖程度?
        1.公司有专业的自动化团队
            业务场景覆盖:80% - 90%

        2.公司没有专业的自动化团队
            业务场景覆盖度:30% 左右,业务平台主体功能案例覆盖

    自动化测试的

    1.QTP :是一款商业化的自动化测试工具,提供了强大的脚本录制功能,
    支持b/s 和c/s两种架构的自动化测试项目

    2.robot framework :简称rf,一款由python编写的自动化工具,
    具备良好的拓展性,能够支持python自定义关键字(函数)驱动,
    支持ui自动化,api自动化


    3.selenium:他是一款基于web应用程序的自动化测试工具,他是由
    JavaScript语言编写的,他支持多平台,多语言,多浏览器去实现自动化承德市
    selenium是一款免费开源的工具
        多平台:Windows,mac,linux,unix
        多语言:JavaScript,Java,C,Python
        多浏览器:Chrome,火狐,ie


自动化测试的流程:
    1.产品验收通过,项目上线之后,去筛选需求,挑选出需要转换
    为自动化测试的场景案例

    2.针对筛选出来的业务场景组织评审。评审通过的业务场景进行
    实施

    3.针对当前的测试工具进行选择,搭建自动化测试的框架
    结构。

    4.编写用例的cass。

    5.执行自动化案例,输出生成测试报告。设定定时任务,进行执行分析自动化测试
    结果

    6.做自动化项目代码的维护以及后续的案例转换。


1.安装第三方的工具库:selenium 3.14.1 版本
2.安装浏览器驱动
    打开浏览器:查看当前自己浏览器的版本,url栏输入chrome:version
    http://chromedriver.storage.googleapis.com/index.html
    打开下载驱动网址,找到当前浏览器版本一致或相近的驱动进行下载
    3.将解压完成后的chromedriver.exe 此程序放在你的python安装路径下来的
    Scripts目录下面


"""

# from selenium import webdriver
#
# driver = webdriver.Chrome()  # 创建一个谷歌浏览器驱动对象。
# driver.get("https://www.baidu.com")  # 通过get打开浏览器
# driver.maximize_window()  # 窗口最大化
"""ui自动化元素的定位方法:

id定位:
通过页面功能标签里面的id元素实现功能定位操作

find_element_by_id()

"""
# driver.find_element_by_id("kw").send_keys("ui自动化测试")

# driver.find_element_by_id("su")

"""
class 元素定位:

find_element_by_class_name()

"""
# driver.find_element_by_class_name("s_ipt").send_keys("ui自动化")

"""
name元素定位:
fin_element_bay_name()

"""

# driver.find_element_by_name("wd").send_keys("武汉多测师")


"""
text 文本值定位内容

find_link_text

"""
# driver.find_element_by_link_text("hao123").click()

"""
partial_link_text:模糊文本定位
find_element_by_partial_link_text

"""
# driver.find_element_by_partial_link_text("123").click()


"""

tag_name:通过获取页面的标签进行元素的定位。

element:查找页面单个元素只存在单个标签的时候定位,如果我有多个相同的
标签或者元素,默认第一个元素标签定位

elements:获取页面上面所有的标签元素

get_attribute():获取标签当中的元素
"""
# driver.find_element_by_id()
# all = driver.find_elements_by_tag_name("input")
# for i in all:
#     if i.get_attribute("id") == "kw":
#         i.send_keys("ok,定位到了")

"""
xpath:路径定位:标签的层级路径
绝对路径:找到对应的元素:右键copy--> copy full xpath
相对路径:找到对应的元素:右键copy--> copy xpath
find_element_by_xpath

"""
# 绝对路径
# driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input").send_keys("上海多测师")
# 相对路径
# driver.find_element_by_xpath('//*[@id="kw"]').send_keys("武汉黄鹤楼")

# 自己写一个相对路径:
# driver.find_element_by_xpath("//*[@id='kw']").send_keys("海洋极地")

# 自己写一个相对路径组合
# driver.find_element_by_xpath("//*[@id='kw' and @class = 's_ipt']").send_keys("海洋极地")


# driver.get("https://www.4399.com")
# driver.find_element_by_name("k").send_keys("造梦西游")
# driver.find_element_by_link_text('搜索').click()


""" 找上级定位


"""
# driver.find_element_by_xpath("//*[@id='from]/span[1]/input[1]").send_keys("王八蛋")


"""css 定位方法 :
find_element_by_css_selector()
支持路径定位
支持找父级定位
id选择器定位,class选择器   选择器定位
支持id定位  class定位等等
组合定位
"""
# driver.find_element_by_css_selector("#kw").send_keys("哈哈哈")
# driver.find_element_by_css_selector(".s_ipt").send_keys("你好武汉")

# 元素定位方法 maxlength=255  name="wd"  autocomplete="off"

# driver.find_element_by_css_selector("[maxlength='255']").send_keys("你好武汉")
# driver.find_element_by_css_selector('[name="wd"]').send_keys("世界杯")
# driver.find_element_by_css_selector('[autocomplete="off"]').send_keys("国足")


# 路径定位
# driver.find_element_by_css_selector("span>input").send_keys("世界杯")
# driver.find_element_by_css_selector('#su').click()


"""
定位方法优先级:
有id class 值优先id,class

"""
# id="s-usersetting-top"  class="set"  class="c-icon s-skin-close"
# driver.find_element_by_css_selector("#s-usersetting-top").click()
# driver.find_element_by_css_selector(".set").click()
# driver.find_element_by_xp("class='c-icon s-skin-close'").click()





"""针对鼠标悬浮操作的处理:
ActionChains(driver):用于操作鼠标的类
move_to_element:鼠标移动到某一个元素上
perform:执行所有操作
"""
#
# from selenium import webdriver
# from selenium.webdriver.common.action_chains import ActionChains
# from time import sleep
#
# driver = webdriver.Chrome()  # 创建一个谷歌浏览器驱动对象。
# driver.get("https://www.baidu.com")
# driver.maximize_window()
#
# element_sz = driver.find_element_by_id('s-usersetting-top')
# ActionChains(driver).move_to_element(element_sz).perform()


# driver.find_element_by_css_selector("#s-usersetting-top").click()
# sleep(2)
# driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[2]/span').click()
# sleep(2)
# driver.find_element_by_xpath('//*[@id="wrapper"]/div[6]/span/i').click()

# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('https://lol.qq.com/main.shtml')
# driver.maximize_window()
#
# driver.find_element_by_xpath('/html/body/div[1]/div[1]/div[1]/div[2]/p[1]/a').click()
# sleep(1)
# login_qq_iframe = driver.find_element_by_xpath('//*[@id="loginIframe"]')
# driver.switch_to.frame(login_qq_iframe)

# driver.find_element_by_xpath('//*[@id="switcher_plogin"]').click()
# sleep(1)
# driver.find_element_by_xpath('//*[@id="u"]').send_keys('1792877590')
# sleep(1)
# driver.find_element_by_xpath('//*[@id="p"]').send_keys('sq1792877590')
# sleep(1)
# driver.find_element_by_xpath('//*[@id="login_button"]').click()
# sleep(1)
# driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[1]/div[4]/div[1]/input').send_keys('564891')
# sleep(1)
# driver.find_element_by_xpath('//*[@id="app"]/div/div/div/div[1]/div[5]/button/div').click()
# driver.find_element_by_xpath('//*[@id="img_out_1792877590"]').click()
#
# driver.switch_to.default_content()


"""
处理alert的弹窗

"""
# from selenium import webdriver
# driver = webdriver.Chrome()
# driver.get("file:///C:/Users/Administrator/Documents/tencent%20files/1792877590/filerecv/alert.html")
#
# driver.find_element_by_xpath('/html/body/button').click()
#
# # driver.switch_to.alert.accept()
# driver.switch_to.alert.dismiss()


"""
滚动条的操作:
js的方法进行处理滚动条

"""
# import time
# from selenium import webdriver
# driver = webdriver.Chrome()
# driver.get('https://www.jd.com/')
# driver.maximize_window()
# time.sleep(1)

# js = "window.scrollTo(0,20000)"
# driver.execute_script(js)
# time.sleep(2)

# 点击拍卖
# driver.find_element_by_xpath('//*[@id="navitems-group3"]/li[1]/a').click()



# 获取窗口的句柄:
# all_handle = driver.window_handles
# print(all_handle)
"""
['CDwindow-EEF2E9F3CECC62C7E35FDF9157F94C88',
'CDwindow-5D645532EEB712A2148531D161AF0618']"""

# 窗口切换
# driver.switch_to.window(all_handle[1])
# time.sleep(1)
#
# # 获取当前位置所在的句柄窗口
# handle = driver.current_window_handle
# print(handle)
# """CDwindow-EEF2E9F3CECC62C7E35FDF9157F94C88
# """
# driver.find_element_by_xpath('//*[@id="extra-sifa"]/a').click()


# from selenium.webdriver.support.select import Select
# from selenium import webdriver
# from time import sleep
#
# driver = webdriver.Chrome()
# driver.get('https://www.xmrc.com.cn/')
# driver.maximize_window()
# sleep(2)
#
# select_element = driver.find_element_by_xpath('//*[@id="jobtype"]')
# 通过select 类当中selec_by_value进行下拉框内容的选择,通过
# select 标签内容的value进行定位,内容定位
# Select(select_element).select_by_value('9971')

# 通过Select类当中的select_by_index(3)进行定位,索引定位
# Select(select_element).select_by_index(3)

# select_by_visible_text通过text文本进行定位
# Select(select_element).select_by_visible_text("技工类")


import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.jd.com/')
driver.maximize_window()
time.sleep(1)

# 点击拍卖
driver.find_element_by_xpath('//*[@id="navitems-group3"]/li[1]/a').click()

# 获取窗口的句柄:
all_handle = driver.window_handles
print(all_handle)

# 窗口切换
# driver.switch_to.window(all_handle[1])
# time.sleep(1)

# close:关闭当前的窗口
# driver.close()

# quirt: 关闭所有窗口
# driver.quit()




分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册