基于SeleniumIDE+Python+Edge浏览器进行web自动化测试

2022/2/18 20:19:13

本文主要是介绍基于SeleniumIDE+Python+Edge浏览器进行web自动化测试,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

安装Edge浏览器及Selenium IDE测试工具

这里使用的是Edge浏览器,大家可以使用自己的浏览器,不过拓展里要有Selenium IDE,否则无法进行后续操作

 

点击链接下载并安装Edge浏览器下载 Microsoft Edge Web 浏览器 | Microsoft

 

打开浏览器,点击浏览器右侧工具栏,点击扩展

 

 

 

 

 

在点击左侧的获取 Microsoft Edge 扩展,然后搜索“selenium”,选择Selenium IDE安装。

 

 

 

 

 

 

安装之后可以在右上角看到Selenium IDE图标。

 

 

 

 

 

使用Selenium IDE

首先打开Selenium IDE

 

 

 

 

 

创建项目

点击“create a new project”,在弹出的页面输入项目名称“test01”

 

 

 

 

 

Selenium IDE界面说明

 

 

 

 

 

①运行所有:运行一个测试案例集中所有案例。

②运行:运行当前选定的测试案例。

③案例集列表。

④用来填写被测试网站里的地址。

⑤当前选中命令对应参数。

⑥日志/参考。

⑦测试脚本。

⑧跳过当前指令。

⑨速度控制:控制案例的运行速度。

⑩设置断点。

⑪暂停/恢复案例执行。

⑫录制:点击后可以记录你对浏览器的操作。

 

Selenium IDE的简单使用

录制脚本

点击右侧REC即可开始录制脚本。一般录制完脚本后,需要在运行工具中重跑脚本测试,去掉一些无用或异常的测试命令。

 

 

 

结束录制后,选择用例test01右侧的三个点即可弹出选择列表。

 

 

 

 

导出脚本

导出可以选择Java、JavaScript、python等语言,这里我们以python为例

 

 

 

 

PyCharm中的配置

安装PyCharm模块selenium

 

 

 

 

 

 

 

 

用PyCharm打开导出的python文件,源代码如下:

 

# Generated by Selenium IDE

import pytest

import time

import json

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.support import expected_conditions

from selenium.webdriver.support.wait import WebDriverWait

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

 

class TestTest01():

  def setup_method(self, method):

    self.driver = webdriver.Chrome()

    self.vars = {}

  

  def teardown_method(self, method):

    self.driver.quit()

  

  def test_test01(self):

    self.driver.get("https://www.baidu.com/")

    self.driver.set_window_size(1088, 816)

    self.driver.find_element(By.ID, "kw").send_keys("selenium")

    self.driver.find_element(By.ID, "kw").send_keys(Keys.ENTER)

 

 

 

 

去掉无用的脚本

 

 

添加浏览器驱动

l 先去浏览器设置里看一下自己的浏览器版本;

l 再下载对应的驱动;

l 修改浏览器驱动的路径,后面路径换成自己的路径就可以了

l 最后运行程序就会自动打开浏览器进行相应的测试操作

 

 

 

 

 

使用Selenium进行Python开发

 

环境安装

下载安装selenium

pip install selenium -i https://mirrors.aliyun.com/pypi/simple/

浏览器创建

Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等,还有Android、BlackBerry等手机端的浏览器。另外,也支持无界面浏览器PhantomJS。

from selenium import webdriver

 

browser = webdriver.Chrome()

browser = webdriver.Firefox()

browser = webdriver.Edge()

browser = webdriver.PhantomJS()

browser = webdriver.Safari()

元素定位

webdriver 提供了一系列的元素定位方法,常用的有以下几种:

定位一个元素

定位多个元素

含义

find_element_by_id

find_elements_by_id

通过元素id定位

find_element_by_name

find_elements_by_name

通过元素name定位

find_element_by_xpath

find_elements_by_xpath

通过xpath表达式定位

find_element_by_link_text

find_elements_by_link_tex

通过完整超链接定位

find_element_by_partial_link_text

find_elements_by_partial_link_text

通过部分链接定位

find_element_by_tag_name

find_elements_by_tag_name

通过标签定位

find_element_by_class_name

find_elements_by_class_name

通过类名进行定位

find_elements_by_css_selector

find_elements_by_css_selector

通过css选择器进行定位

注意:

1、find_element_by_xxx找的是第一个符合条件的标签,find_elements_by_xxx找的是所有符合条件的标签。

2、根据ID、CSS选择器和XPath获取,它们返回的结果完全一致。

3、另外,Selenium还提供了通用方法find_element(),它需要传入两个参数:查找方式By和值。实际上,它就是find_element_by_id()这种方法的通用函数版本,比如find_element_by_id(id)就等价于find_element(By.ID, id),二者得到的结果完全一致。

实例演示

假如有一个web页面,通过前端工具查看到一个元素的属性是这样的。

<html

 <head

 <body link="#0000cc" 

 <a href="/" rel="external nofollow" onmousedown="return c({'fm':'tab','tab':'logo'})" 

 <form name="f" action="/s" 

  <span  </span

  <input name="wd" value="" maxlength="255" autocomplete="off" 

通过id定位:

dr.find_element_by_id("kw")

通过name定位:

dr.find_element_by_name("wd")

通过class name定位:

dr.find_element_by_class_name("s_ipt")

通过tag name定位:

dr.find_element_by_tag_name("input")

通过xpath定位,xpath定位有N种写法,这里列几个常用写法:

dr.find_element_by_xpath("//*[@]")

dr.find_element_by_xpath("//*[@name='wd']")

dr.find_element_by_xpath("//input[@]")

dr.find_element_by_xpath("/html/body/form/span/input")

dr.find_element_by_xpath("//span[@]/input")

dr.find_element_by_xpath("//form[@]/span/input")

dr.find_element_by_xpath("//input[@ and @name='wd']")

通过css定位,css定位有N种写法,这里列几个常用写法:

dr.find_element_by_css_selector("#kw")

dr.find_element_by_css_selector("[name=wd]")

dr.find_element_by_css_selector(".s_ipt")

dr.find_element_by_css_selector("html   body   form   span   input")

dr.find_element_by_css_selector("span.soutu-btn  input#kw")

dr.find_element_by_css_selector("form#form   span   input")

假如页面上有如下一组文本链接

<a href="http://news.baidu.com" rel="external nofollow" name="tj_trnews" 新闻</a

<a href="http://www.hao123.com" rel="external nofollow" name="tj_trhao123" hao123</a

通过link text定位:

dr.find_element_by_link_text("新闻")

dr.find_element_by_link_text("hao123")

通过partial link text定位:

dr.find_element_by_partial_link_text("新")

dr.find_element_by_partial_link_text("hao")

dr.find_element_by_partial_link_text("123")

控制浏览器

常用的控制浏览器操作的一些方法

方法

说明

set_window_size()

设置浏览器的大小

back()

控制浏览器后退

forward()

控制浏览器前进

refresh()

刷新当前页面

clear()

清除文本

send_keys (value)

模拟按键输入

click()

单击元素

submit()

用于提交表单

get_attribute(name)

获取元素属性值

is_displayed()

设置该元素是否用户可见

size

返回元素的尺寸

text

获取元素的文本

 



这篇关于基于SeleniumIDE+Python+Edge浏览器进行web自动化测试的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程