Selenium-三大等待和四大操作

这篇具有很好参考价值的文章主要介绍了Selenium-三大等待和四大操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、三大等待

WebdriverWait

1、sleep()强制等待

time.sleep()

2、智能等待:最多等待15秒,如果在15秒内,任何一个时候元素出现了,那就继续下一行代码,超时了,报超时异常,TimeoutException,NosuchElementException

2.1隐形等待:从implicitly_wait(10)源码的注释中可以看到,隐形等待的用法。

Sets a sticky timeout to implicitly wait for an element to be found,
   or a command to complete. This method only needs to be called one
   time per session. To set the timeout for calls to
   execute_async_script, see set_script_timeout.

2种场景,1个元素被找到-元素存在、1条命令执行完成

每一个会话当中,只需要被调用一次。

driver.implicitly_wait(10)

隐形等待一般不会用,通常使用显性等待。

2.2显性等待: 等待元素可见,等待新的窗口出现,隐形等待是处理不了这些的

区别:显性等待可以处理更多的场景,隐形等待处理不了,隐形等待只能处理那两种

使用方法,条件+等待

等待,等待上线-15秒,轮训周期 - 多少秒去确认,默认0.5s一次

条件,有一个专门的条件模块,Expected_condition

需要引入2个包,一个是等待,一个条件

from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions

WebDriverWait(driver,15,0.5).until/not_until(条件)

这种显示等待使用频率最高

例如:

loc这个元素可见

loc = ("xpath", '')
WebDriverWait(driver, 15,0.5).until(expected_conditions.visibility_of_element_located(loc))

二、窗口切换,switch_to

1、触发新窗口

2、得到目前打开的所有窗口----句柄,每一个窗口都有一个句柄

列表,-----先后顺序,先出现的,先追加到列表,最新的窗口在列表的最后,最先打开的窗口在列表的第一位。

wins = driver.window_handles

3、切换

driver.switch_to.window(wins[-1])

在新的页面里,定位元素操作

例如:

wins = driver.window_handles

print(drver.current_window_handle)

# 切换到新的窗口 

driver.switch_to_window(wins[-1])

# 使用显性等待页面元素出现

loc = (By.XPATH, '//div[@class="download-button-container"]//a')

WebDriverWait(drvier, 15).until(expected_conditions.visibility_of_element_located(loc))

driver.find_element(*loc).click()

iframe切换

1、识别元素是否在iframe当中

2、切换:

切户到iframe

driver.switch_to.frame()

支持3中方式来确定切换到哪一个iframe

1)iframe 下标

driver.switch_to.frame(3)

2) iframe 元素的name属性

driver.switch_to.frame("login_frame_qq")

3) iframe 这个webElement元素

driver.switch_to.frame(driver.find_element_by_xpath())

三、鼠标操作

ActionChains类

perform()执行鼠标的动作

1、悬浮:move_to_element

2、点击:click

3、双击: double_click

4、右键:  context_click

5、拖拽:drag_and_drop

6、暂停:pause

7、输入:send_keys

例如:

from selenium.webdriver.common.action_chains import ActionChains

ActionChains(driver).move_to_element(ele).perform(),悬停在某个地方

# 1、找到鼠标要操作的元素
loc = (By.XPATH, '//')
ele = driver.find_element(*loc)

# 2、实例化ActionChains类
ac = ActionChains(driver)
# 3、调用鼠标行为
ac.move_to_element(ele).click(ele)
# 4、调用perform()来执行鼠标动作
ac.perform()

四、Select类,下拉框的使用

from selenium.webdriver.support.select import Select

# 初始化,找select 对象
loc = (By.XPATH, '')
select_element = driver.find_element(loc)
s = Select(select_element)
# 根据下标,value属性、文本内容来选择值
s.select_by_index(6)
time.sleep(3)
s.select_by_value('doc')
time.sleep(3)
s.select_by_visible_text('文件')

五、按键操作

element.send_keys("selenium webdriver", Keys.ENTER)

六、js+dom应用

滚动条


# js函数,元素对象.scrollIntoView()
loc = (By.XPATH, '')
a = driver.find_element(*loc)
driver.execute_script('arguments[0].scrollIntoView();', a)
# 滚动到页面底部
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

# 滚动到页面顶部
driver.execute_script("window.scrollTo(document.body.scrollHeight,0)")

七、上传操作

有两种情况:

1、如果是input可以直接输入路径的,那么直接调send_keys输入路径

2、非input标签的上传,则需要借助第三方工具:

2.1AutoIt我们去调用其生成的au3或exe文件

2.2SendKeys第三方库

2.3Python pywin32库,识别对话框句柄,进而操作pyautoit

总结

WebdriverWait类

switch_to 切换

Alert 处理alert弹窗

ActionChains 鼠标操作

Select ,select下拉列表

Keys 特殊键,键盘操作

js操作,滚动条

上传操作文章来源地址https://www.toymoban.com/news/detail-424397.html

到了这里,关于Selenium-三大等待和四大操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 中国四大骨干网和三大运营商网络是什么关系?

    中国四大骨干网和三大运营商网络是什么关系? 来源: “鲜枣课堂”公众号 骨干网是什么; 几台计算机连接起来,互相可以看到其他人的文件,这叫局域网,整个城市的计算机都连接起来,就是城域网,把城市之间连接起来的网就叫骨干网。这些骨干网是国家批准的可以直

    2024年02月16日
    浏览(31)
  • selenium的三种等待方式(强制等待,隐式等待,显示等待)

    目录 1.强制等待(无条件等待) 2.隐式等待 3.显示等待 有时候做自动化测试,需要进行等待,因为下一步的操作依赖于上一步的结果,但是程序执行的很快,有时候页面还未加载完成就进行了下一步的操作,很容易就出现错误,例如像【NO SuchElement Exception】有时候就是因为这

    2024年02月15日
    浏览(28)
  • Selenium 三种等待方式详解 (强制等待、隐式等待、显示等待)

    ①在进行WEB自动化工作时,一般要等待某一页面元素加载完成后,才能对该元素执行操作,否则自动化脚本会抛出找不到元素的错误,这样就要求我们在UI自动化测试的有些场景上加上等待时间。 ②等待方式的设置是保证自动化脚本稳定有效运行的一个非常重要的手段。 ①强

    2024年02月03日
    浏览(31)
  • 五、Selenium 三种等待方式:强制等待、隐式等待、显示等待

    名词解释:强制线程休眠一定时间,适合脚本调试时使用。 常用方法: Thread.sleep(long millis); 优点:适合脚本调试时使用; 缺点:不能准确把握需要等待的时间,如果用例中大量使用,会浪费不必要的等待时间,影响用例的执行效率; 操作未完成,等待结束,导致系统报错

    2023年04月08日
    浏览(25)
  • Selenium中的隐式等待和显式等待

    在Selenium中,“等待”在执行测试中起着重要作用。在本文中,您将学习Selenium中“隐式”和“显式”等待的各个方面。 在本文中,您将学习到 1. 为什么我们需要在selenium中等待? 2. 隐瞒等待 3. 明确等待 4. 流利的等待 为什么我们需要在Selenium中等待? 大多数Web应用程序都

    2024年02月07日
    浏览(34)
  • Selenium等待时间——隐性等待(implicitly_wait())

            web.implicitly_wait(),隐性等待设置了一个时间,在一段时间内网页是否加载完成,如果完成了,就进行下一步;在设置的时间内没有加载完成,则会报超时加载。         缺点是不智能,因为随着ajax技术的广泛应用,页面的元素往往都可以时间局部加载,也就是

    2024年02月15日
    浏览(31)
  • selenium中的三种等待方式以及显示等待和隐式等待区别

    selenium中一般分为三种等待方式:显示等待、隐式等待、sleep强制等待 1、显示等待(有条件) 程序提前指定等待条件和等待时间,在查找元素时,判断规定时间内是否满足条件,满足则继续执行,不满足或超出时间则抛出异常 2、隐式等待(无条件) 程序提前指定等待时间,在查

    2024年02月12日
    浏览(31)
  • 一定要会用selenium的等待,3种等待方式解读

    很多人问,这个下拉框定位不到、那个弹出框定位不到…各种定位不到, 其实大多数情况下就是两种问题: 有frame 没有加等待 殊不知,你的代码运行速度是什么量级的,而浏览器加载渲染速度又是什么量级的,就好比闪电侠和凹凸曼约好去打怪兽,然后闪电侠打完回来之后

    2024年03月16日
    浏览(39)
  • Selenium 等待方式详解

    在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定的超时 时间,大致在1-3秒 如果这个时间内仍然定位不到元素,就会抛出异常,中止脚本执行 我们可以通过在脚本中设置等待的方式来避免由于网络延迟或浏览器卡顿导致的偶然失败 强制等

    2024年02月03日
    浏览(32)
  • Selenium:三种等待方式

    目录 一、显示等待 二、隐式等待 三、强制等待 UI自动化测试,大多都是通过定位页面元素来模拟实际的生产场景操作。但在编写自动化测试脚本中,经常出现元素定位不到的情况,究其原因,无非两种情况:1、有frame;2、没有设置等待。 因为代码运行速度和浏览器加载渲

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包