自动化测试工具selenium的使用

自动化测试工具selenium的使用

一 selenium 和浏览器驱动的安装

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

下载对应浏览器版本的驱动并进行安装

二 定位页面元素

2.1定位使用的方法

find_elements(self, by=By.ID, value=None) #2.1.1 by 属性:定位路径使用的方法
    By.ID
    By.TAG_NAME
    By.CLASS_NAME
    By.NAME
    By.XAPTH

​ By.CSS_SELECTOR

该属性默认的属性值为By.ID

#2.1.2 value属性:定位的路劲

2.2 解析方法详解

##例:

'''<html>
  <head>...<head/>
  <body>
    <div id="csdn-toolbar">
      <div class="toolbar-inside">
        <div class="toolbar-container">
          <div class="toolbar-container-left">...</div>
          <div class="toolbar-container-middle">
            <div class="toolbar-search onlySearch">
         <div class="toolbar-search-container">
            <input id="toolbar-search-input" autocomplete="off" type="text" value="" placeholder="C++难在哪里?">
         </div>
          </div>
        </div>
        </div>
      </div>
     </div>
   </div>
  </div>
  </body>
</html>'''
#2.2.1 XPATH 定位

​ # 绝对路径(层级关系)定位

        driver.find_element(By.XAPTH, "/html/body/div/div/div/div[2]/div/div/input[1]")

# 利用元素属性定位

        driver.find_element(By.XAPTH, "//*[@id='toolbar-search-input']")) 
   # 层级+元素属性定位
        driver.find_element( By.XAPTH, "//div[@id='csdn-toolbar']/div/div/div[2]/div/div/input[1]")
   # 逻辑运算符定位
        driver.find_element(By.XAPTH, "//*[@id='toolbar-search-input' and @autocomplete='off']")
#2.2.2 CSS 定位

请添加图片描述

例:

  driver.find_element(By.XPATH,'#toolbar-search-input')
  driver.find_element(By.XPATH,'html>body>div>div>div>div>div>div>input')
#2.2.3 id 定位

标签的id具有唯一性,不会重复,所以我们可以不用管其他的标签的内容。

例子如下:

  '<input id="toolbar-search-input" autocomplete="off" type="text" value="" placeholder="C++难在哪里?">'
  driver.find_element(By.ID, "toolbar-search-input")
#2.2.4 name 定位
name 指定标签的名称,在页面中可以不唯一 
例子如下:
'<meta name="keywords" content="xiao">'
driver.find_element(By.NAME,"keywords")
#2.2.5 class 定位

class指定的类名可以不唯一

例子如下:

  '<div class="toolbar-search-container">'
  driver.find_element(By.CLASS_NAME,"toolbar-search-container")
#2.2.6 link 定位,partial_link 定位,tag 定位

这三种定位方式不常用

三 模拟浏览器操作

1.1浏览器窗口操作

set_window_size() 方法来修改浏览器窗口的大小。
maximize_window() 方法实现浏览器全屏显示
back和forward方法来实现页面的后退与前进
refresh()来刷新当前页面。
window_handles获取所有窗口句柄,返回的是列表
switch_to.window("句柄")用来切换窗口
switch_to.frame(“id”)切换子窗口
其他方法如下:

在这里插入图片描述

1.2鼠标事件

鼠标操作都封装在ActionChains类中,常见方法如下:
在这里插入图片描述

使用时先创建ActionChains(driver)实例化对象,再利用对象去调用 键盘事件也是如此

1.3键盘事件

常用事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KyE4v4zq-1637143555438)(C:\Users\Ryan\AppData\Roaming\Typora\typora-user-images\image-20211117180520658.png)]

其他键盘事件以及使用方法:

例:向下箭头的使用

  tr = ActionChains(bro)
  tr.key_down(Keys.DOWN).perform()
#1 实例化ActionChains对象
#2 调用方法key_down(“执行的操作”)
#3 perform()保存操作(即执行操作)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WrElB3FT-1637143555439)(C:\Users\Ryan\AppData\Roaming\Typora\typora-user-images\image-20211117180511484.png)]

1.4元素等待事件

1.4.1 显式等待
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
driver:浏览器驱动
timeout:超时时间,单位秒
poll_frequency:每次检测的间隔时间,默认为0.5秒
ignored_exceptions:指定忽略的异常,如果在调用 until 或 until_not 的过程中抛出指定忽略的异常,则不中断代码,默认忽略的只有 NoSuchElementException 。
until(method, message=’ ‘)
until_not(method, message=’ ')

method:指定预期条件的判断方法,在等待期间,每隔一段时间调用该方法,判断元素是否存在,直到元素出现。until_not 正好相反,当元素消失或指定条件不成立,则继续执行后续代码
message: 如果超时,抛出 TimeoutException ,并显示 message 中的内容
method 中的预期条件判断方法是由 expected_conditions 提供,下面列举常用方法。
例子:
from selenium.webdriver.common.by import By
from selenium import webdriver

driver = webdriver.Chrome()
locator = (By.ID, 'kw')
element = driver.find_element('kw')
element = WebDriverWait(driver, 5, 0.5).until(
            EC.presence_of_element_located((By.ID, 'kw')),
                                           message='超时啦!')


1.4.3 隐式等待
隐式等待是用implicitly_wait() 来实现的。
例子:
    driver.implicitly_wait(5)
1.4.3 强制等待

time.sleep(0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厭氧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值