美文网首页
selenium踩过的坑

selenium踩过的坑

作者: 阿尼奥赛哟 | 来源:发表于2020-04-30 17:20 被阅读0次

Python  selenium常用方法总结

1. 显示等待和隐式等待

1. 显示等待:WebDriverWait() 针对页面某个特定的元素设置的等待时间,等不到就一直等,直到等到位置。如果超时就报错。一般与until()和until_not()配合使用。

官方示例:

element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“someId”))

is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda x: x.find_element_by_id(“someId”).is_displayed())

2. 隐式等待:implicity_wait() 首先这参数并非一个固定的等待时间,它并不影响脚本的执行速度。其次,它并不针对页面上的某一元素进行等待。当脚本执行到某个元素定位是,如果元素可以定位,则继续执行,如果元素定位不到,则它将以轮询的方式不断地判断元素是否被定位到。假设在第六秒定位到了元素则继续执行,若直到超出设置的时长10秒还没有定位到元素,则抛出异常。

3. 强制等待:time.sleep()

2. 悬停操作

#导入selenium中的actionchains的方法

from selenium.webdriver.common.action_chains import ActionChains

#识别需要悬停的元素

ele = self.driver.find_element_by_class_name('member-top')

#鼠标移到悬停元素上

ActionChains(self.driver).move_to_element(ele).perform()

3. Select使用

在利用selenium进行UI自动化测试过程中,经常会遇到下拉框选项,这篇博客,就介绍下如何利用selenium的Select模块来对标准select下拉框进行操作。。。

首先导入Select模块:

from selenium import webdriver3 from selenium.webdriver.support.select import Select

感兴趣的可以将鼠标指向Select,然后按住Ctrl鼠标单击,查看Select模块的源码,是如何定义封装Select的各个方法的。

1、Select提供了三种选择某一项的方法

1 select_by_index          # 通过索引定位

2 select_by_value          # 通过value值定位

3 select_by_visible_text   # 通过文本值定位

注意事项:

index索引是从“0”开始;

value是option标签的一个属性值,并不是显示在下拉框中的值;

visible_text是在option标签中间的值,是显示在下拉框的值;

2、Select提供了三种返回options信息的方法

1 options                  # 返回select元素所有的options

2 all_selected_options     # 返回select元素中所有已选中的选项

3 first_selected_options   # 返回select元素中选中的第一个选项

注意事项:

这三种方法的作用是查看已选中的元素是否是自己希望选择的:

options:提供所有选项的元素列表;

all_selected_options:提供所有被选中选项的元素列表;

first_selected_option:提供第一个被选中的选项元素;

3、Select提供了四种取消选中项的方法

1 deselect_all             # 取消全部的已选择项

2 deselect_by_index        # 取消已选中的索引项

3 deselect_by_value        # 取消已选中的value值

4 deselect_by_visible_text # 取消已选中的文本值

注意事项:

在日常的web测试中,会经常遇到某些下拉框选项已经被默认选中,这种时候就需要用到这里所说的四种方法;

下面以实际的代码来做个示例,被测试网页与源码截图如下:

比如要选择3线,那么三种选择方法示例代码如下:

 # coding=utf-8 

from selenium import webdriver 

 from selenium.webdriver.support.select import Select 

from time import sleep 

 driver = webdriver.Chrome() 

 # 根据索引选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_index("3")

 # 根据value值选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_value("3线")

 # 根据文本值选择

Select(driver.find_element_by_name("storeDeclare.cityLine")).select_by_visible_text("3线")

 sleep(5)

 driver.quit()

4. Iframe

注意界面有iframe的时候

driver.switch_to.frame("")

# iframe会导致xpath失效

之后还需要返回

driver.switch_to.default_content()

5. 读取HTML-Table表格

https://blog.csdn.net/weixin_34198797/article/details/86781380

相关文章

  • selenium踩过的坑

    Python selenium常用方法总结 1. 显示等待和隐式等待 1. 显示等待:WebDriverWait(...

  • 交互设计师所要避免的几个坑

    前言 工作中难免会踩到几个坑,即使现在不踩以后还会踩,只有踩过才会深刻记住,踩过说明爱过!但是踩过的坑必须把坑填满...

  • 那些年在selenium中踩过的坑

    升级到selenium 3.0x以后,执行原来可以运行的脚本,报错 原因 就是升级到selenium3,及以上后,...

  • vue踩过的坑

    vue踩过的坑

  • D1094:踩坑的价值最大化

    是人就会踩坑,不踩坑理论上就不属于人类,踩坑是人之常情,能回头站在坑边反思,才是对踩过的的坑价值最大化的体现,要不...

  • Selenium 之 Mac 环境下 Python 安装 se

    作为一个Python初级菜鸟 ,以下是我Mac 环境下使用Python 安装selenium 的踩坑记录。 pip...

  • [Selenium+Chrome使用总结]加载Flash、禁用J

    前言 前几周做了个使用Selenium的项目,踩了好多好多好多的Selenium的坑,越来越感觉他作为一个第三方库...

  • 投资避坑指南

    2022年9月14日(第224天) 经常反思踩过的坑,犯过的错,了解别人踩过的坑,犯过的错,思考如何避免自己下次踩...

  • PHP中的数据类型

    一说到数据类型,这个坑就太多了,多到有哪些坑,有多少坑,不知道自己还会踩哪些坑,以及踩过的坑还会不会再踩,我对...

  • 踩过的坑

    1、关于Windows下修改hosts文件无法生效,刚开始直接用浏览器打开发现404,后来ping域名才发现是连接...

网友评论

      本文标题:selenium踩过的坑

      本文链接:https://www.haomeiwen.com/subject/vezzwhtx.html