• 自动化测试(三)


    控制浏览器窗口大小:

    有时候我们希望能够以某种浏览器尺寸打开,比如将浏览器设置为移动端大小(480*800),然后访问移动站点,对其样式进行评估:webdriver提供了set_window_size()方法来设置浏览器大小。

    # -*- coding:UTF-8 -*-
    #  此处是为了防止中文乱码 当然也可以写成#coding=utf-8,等号两边不要有空格否则不起作用
    __autor__ = 'zhouli'  # 这些是在后台进行模板配置自动生成的
    __date__ = '2018/6/17 12:02'
    from selenium import webdriver
    # 导入Selenium的Webdriver包,因为只有导入这个包才能使用Webdriver API进行自动化脚本的开发
    driver = webdriver.Chrome()  # 这句话是将Chrome这个对象赋值给driver
    driver.get("http://www.baidu.com")  # 获得浏览器对象之后,通过get方法可以向浏览器发送网址(URl)
    print("将窗口宽高设置480*800")
    driver.set_window_size(480, 800)
    # 关于页面元素的定位ID=kw,这个是定位到百度的输入框,并且通过键盘输入方法send_keys()像输入框输入Selenium搜索关键字
    # driver.find_element_by_id("kw").send_keys("Selenium2")
    # 这个一步是定位到ID=su,并且单击搜索按钮发送单击事件click()
    # driver.find_element_by_id("su").click()
    # 关闭浏览器并且退出驱动程序
    driver.quit()

    上面还是使用Chrome来测试的,得到的结果如下:

    看上图,宽度是不是已经变成移动端的大小了,你看左上角还有自动化测试的标识。

    在PC端做测试的时候希望浏览器在全屏下执行,那么可以使用maximize_window()方法打开浏览器全屏显示,用法和上面相同,但是他不需要参数。

    # -*- coding:UTF-8 -*-
    #  此处是为了防止中文乱码 当然也可以写成#coding=utf-8,等号两边不要有空格否则不起作用
    __autor__ = 'zhouli'  # 这些是在后台进行模板配置自动生成的
    __date__ = '2018/6/17 12:02'
    from selenium import webdriver
    # 导入Selenium的Webdriver包,因为只有导入这个包才能使用Webdriver API进行自动化脚本的开发
    driver = webdriver.Chrome()  # 这句话是将Chrome这个对象赋值给driver
    driver.maximize_window()  # 全屏
    frist_url = 'http://www.baidu.com'
    driver.get(frist_url)  # 获得浏览器对象之后,通过get方法可以向浏览器发送网址(URl)
    second_url = 'http://news.baidu.com'
    driver.get(second_url)
    driver.back()  # 这一步是回退到首页
    driver.forward()  # 这一步是在前进
    driver.quit()

    细心的小伙伴会注意到上面多了两个方法:back()和forword(),这两个方法分别对应浏览器的后退键和前进键,小伙伴可以直接复制尝试一下效果。

    那如果需要模拟浏览器的刷新咋办?driver.refresh()代表刷新页面。

    ——————————————————————————————————分割线——————————————————————————————————————————

    前面我们已经学习了定位元素,定位只是第一步,定位之后需要对这个元素进行操作,或单击(按钮)或者输入(输入框),下面看一下webdriver的常用方法。

    clear():清除文本            send_keys(*value):模拟按键输入。                click():单击元素

    这个在第一个例子中已经演示过了,故不再放代码。

    遇到这样咋办?XPATH定位CSS定位?其实WebElement还有一些方法。

    submit(),这种方法用于提交表单。在输入框之后回车的操作就是用submit()方法进行模拟出来的,当然click()也可以实现。

    各位可以自行进行尝试一下。直接复制代码即可。

    # -*- coding:UTF-8 -*-
    #  此处是为了防止中文乱码 当然也可以写成#coding=utf-8,等号两边不要有空格否则不起作用
    __autor__ = 'zhouli'  # 这些是在后台进行模板配置自动生成的
    __date__ = '2018/6/17 12:02'
    from selenium import webdriver
    # 导入Selenium的Webdriver包,因为只有导入这个包才能使用Webdriver API进行自动化脚本的开发
    driver = webdriver.Chrome()  # 这句话是将Chrome这个对象赋值给driver
    driver.maximize_window()  # 全屏
    driver.get("http://www.youdao.com")  # 获得浏览器对象之后,通过get方法可以向浏览器发送网址(URl)
    driver.find_element_by_id('translateContent').send_keys('hello world')
    # driver.find_element_by_tag_name('button').click()
    driver.find_element_by_tag_name('button').submit()
    driver.quit()

    上面的例子,定位搜索框并且,用submit()方法一样可以实现,点击搜索按钮的作用,但是submit使用范围远不及click广。

    size:返回元素的尺寸    text: 获取元素的文本    get_attribute(name):获得该属性的值,is_dispalyed():设置该元素对用户是否可见。

    # -*- coding:UTF-8 -*-
    #  此处是为了防止中文乱码 当然也可以写成#coding=utf-8,等号两边不要有空格否则不起作用
    __autor__ = 'zhouli'  # 这些是在后台进行模板配置自动生成的
    __date__ = '2018/6/17 12:02'
    from selenium import webdriver
    # 导入Selenium的Webdriver包,因为只有导入这个包才能使用Webdriver API进行自动化脚本的开发
    driver = webdriver.Chrome()  # 这句话是将Chrome这个对象赋值给driver
    driver.maximize_window()  # 全屏
    driver.get("http://www.baidu.com")  # 获得浏览器对象之后,通过get方法可以向浏览器发送网址(URl)
    size = driver.find_element_by_id('kw').size
    print(size)
    text = driver.find_element_by_id('cp').text
    print(text)
    attribute = driver.find_element_by_id('kw').get_attribute('type')
    print(attribute)
    result = driver.find_element_by_id('kw').is_displayed()
    print(result)
    driver.quit()

    当然WebElement接口还提供了其他的方法,官方文档去看去吧。

    鼠标事件:从之前的例子中,我们了解到,click()来模拟鼠标的单击操作,现在的web产品提供了更丰富的鼠标交换方式,比如双击,右击,悬停,甚至鼠标拖动等一系列功能。在WebDriver中,将这些关于鼠标的方法封装在ActionChains类提供。

    ActionChains类中提供了鼠标操作的常用方法:

    perform():执行所有ActionChains中存储的行为;context_click():右击;double_click():双击;drag_and_drop():拖动;move_to_element():悬停。

    先看下一张图:

    这个是百度网盘单击鼠标右键菜单,对于ActionChains类所提供的鼠标方法与前面学过click()方法的用法有所不同。

    可以自行测试

    没有过不去的坎,只有没加够的油!
  • 相关阅读:
    HTML5画布(线条、渐变)
    HTML5画布(圆形)
    HTML5画布(矩形)
    HTML5拖放
    HTML5音频
    HTML5视频
    table添加正确的样式
    Mac上SublimeText3安装Emmet时PyV8安装问题
    PHP分页
    Mysql的limit用法
  • 原文地址:https://www.cnblogs.com/zhoulixiansen/p/9220545.html
Copyright © 2020-2023  润新知