资讯专栏INFORMATION COLUMN

Selenium自动化测试网页

elva / 427人阅读

摘要:当你使用时,你必须注意,如果匹配超过一个元素,只返回第一个元素。操作打开一个页面现在设置,这个在域名根目录下生效现在获取所有当前下可获得的查找元素以上是相关的基础内容,下一期更新使用页面对象模式的示例一起越来越好

今天想跟大家分享的是:
关于selenium的自动化测试一些基础的东西

安装环境

1.Python环境
安装完成后通过Windows命令提示符CMD输入“python”,查看是否安装成功

2.安装setuptools与pip
setuptools是PEAK(Python enterprise Application Kit)的一个副项目,是python的distutilsde的增强工具,可以更方便创建和发布python包,特别是对其他包有依赖的情况;
pip是一个安装和管理python包的工具,通过pip来安装python包将变得很简单,省去了繁琐的过程,pip的安装依赖于setuptools,安装pip之前需要先安装setuptools;

3.下载selenium包
pip install selenium

4.下载浏览器驱动
火狐和谷歌各有各的驱动
下载链接:https://www.seleniumhq.org/do...

简单示例

示例名称: test_python_org_search.py

import unittest
#引入 unittest 模块是基于JAVA JUnit的Python内置的模块。 该模块提供了一个框架去组织测试用例
from selenium import webdriver
#selenium.webdriver 模块提供了所有WebDriver的实现
from selenium.webdriver.common.keys import Keys
# Keys 类提供所有的键盘按键操作
class PythonOrgSearch(unittest.TestCase):
#测试类继承自 unittest.TestCase. 继承 TestCase 类是告诉 unittest 模块该类是一个测试用例
    def setUp(self):
        self.driver = webdriver.Firefox()
        #SetUp 方法是初始化的一部分,创建了一个Firefox WebDriver的一个实例
    def test_search_in_python_org(self):
        driver = self.driver
        driver.get("http://www.python.org")
        #driver.get 方法将会根据方法中给出的URL地址打开该网站
        self.assertIn("Python", driver.title)
        #使用assert断言的方法判断在页面标题中是否包含 “Python”
        elem = driver.find_element_by_name("q")
        #找到name为q的DOM节点
        elem.send_keys("pycon")
        #在name为q的DOM节点中,输入pycon
        elem.send_keys(Keys.RETURN)
        #按enter键
        assert "No results found." not in driver.page_source


    def tearDown(self):
        self.driver.close()
    #tearDown 方法会在每一个测试方法执行之后被执行。 该方法可以用来做一些清扫工作,比如关闭浏览器。 当然你也可以调用 quit 方法代替`close`方法
    #区别:quit 将关闭整个浏览器,而`close`只会关闭一个标签页

if __name__ == "__main__":
    unittest.main()
    #入口函数

可直接在shell中运行:python test_python_org_search.py

常用方法讲解

1.打开一个页面
driver.get("http://www.baidu.com")
WebDriver 将等待,直到页面完全加载完毕(其实是等到 onload 方法执行完毕), 然后返回继续执行你的脚本。 值得注意的是,如果你的页面使用了大量的Ajax加载, WebDriver可能不知道什么时候页面已经完全加载。

2.与页面交互
WebDriver 提供了大量的方法帮助你去查找元素,例如

可通过以下方法查找:

element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_element_by_xpath("//input[@id="passwd-id"]")

你还可以通过链接的文本查找他,需要注意的是,这个文本必须完全匹配。 当你使用XPATH时,你必须注意,如果匹配超过一个元素,只返回第一个元素。 如果上面也没找到,将会抛出 NoSuchElementException异常。

执行一些操作,例如
在文本框中输入一些内容:element.send_keys("some text")
清除内容:element.clear()

选择下拉框:WebDriver的支持类有一个叫做 Select的类
from selenium.webdriver.support.ui import Select
select.select_by_index(index)根据option的顺序
select.select_by_visible_text("text")根据文本
select.select_by_value(value)根据它的value值

取消选择:select.deselect_all()

提交选择:element.submit()

3.拖放

element = driver.find_element_by_name("source")
target = driver.find_element_by_name("target")

from selenium.webdriver import ActionChains
action_chains = ActionChains(driver)
action_chains.drag_and_drop(element, target).perform()

4.弹出对话框处理方式
alert = driver.switch_to_alert()
switch_to_alert()   #定位弹出对话
text()    #获取对话框文本值
accept() #相当于点击"确认"
dismiss() #相当于点击"取消"
send_keys() # 输入值,这个alert和confirm没有输入对话框,所以这里就不能用了,所以这里只能使用在prompt这里。

5.操作cookie
打开一个页面 driver.get(“http://www.example.com”)
现在设置Cookies,这个cookie在域名根目录下(”/”)生效 cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’} driver.add_cookie(cookie)
现在获取所有当前URL下可获得的Cookies driver.get_cookies()

6.查找元素
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

以上是selenium相关的基础内容,下一期更新使用页面对象模式的示例,
一起越来越好.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42906.html

相关文章

  • 2018 最好的动化测试工具(Top 10 回顾)

    摘要:自动化测试工具可能是网页应用中最流行的开源自动化测试框架。证书商业是一个开源的自动化测试框架,它实现了关键字测试驱动来实现测试驱动开发。 showImg(https://segmentfault.com/img/bVYz7D?w=1200&h=627); 简评:软件开发实践一直以来都在变化,工具和技术也是如此。这些改变都是为了提高生产率,质量,让客户满意,缩短交付时间,以及交付成功的产...

    waltr 评论0 收藏0
  • 使用 Selenium 抓取网页内容和模拟登入

    摘要:传统的无法执行页面中的浏览器脚本,并且在抓取一些对爬虫有限制的网页时,往往要设定详细的来突破限制,编写起来较为复杂。直接使用浏览器运行,像真正的用户在操作。支持以下方式进行选择元素各种库对情况的检测方法 传统的 cURL 无法执行页面中的浏览器脚本,并且在抓取一些对爬虫有限制的网页时,往往要设定详细的 http header 来突破限制,编写起来较为复杂。 Selenium简介: ...

    mylxsw 评论0 收藏0
  • 使用浏览器的HEADLESS模式进行动化测试

    摘要:了解模式指的是不需要用户界面的浏览器,这种浏览器在自动化测试和爬虫领域有着广泛的应用。实践使用浏览器的模式进行自动化测试,你需要先满足以下前提运行环境或者或者最新版已加入万事俱备,废话不多说我们直接上演示代码。 了解HEADLESS模式 HEADLESS BROWSER 指的是不需要用户界面的浏览器,这种浏览器在自动化测试和爬虫领域有着广泛的应用。 例如你想在网页上运行一些测试,从网页...

    lanffy 评论0 收藏0
  • 使用Nightwatch进行E2E测试中文教程

    摘要:本身项目也是使用来测试的。一个简易的模式的配置如下的分为四个部分在实例上以开头的行为驱动测试风格的接口,及以上版本可用。例如以开头的两套相同的方法库,区别是如果断言失败则退出整个测试用例所有步,则打印后继续进行。 E2E测试 E2E(end to end)测试是指端到端测试又叫功能测试,站在用户视角,使用各种功能、各种交互,是用户的真实使用场景的仿真。在产品高速迭代的现在,有个自动化测...

    newsning 评论0 收藏0
  • 【Python】逆向JavaScript,深度解析Q群成员数据的采集与邮件的来源,阅读完后你就明白了

    摘要:在这里真心感谢一直在支持我的那几个粉丝,谢谢你们的持续关注点赞。果然,第三个包也是按的步差来的,而为零不变,也不变。函数里面的话就是个循环咯,当条件不满足时就一直加,知道条件满足为止。我每天都会抽时间给我的粉丝解答,给与一些学习资源。 目录 前言 准备工作 分析(x0) 分析(x1) 分析(...

    dkzwm 评论0 收藏0

发表评论

0条评论

elva

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<