首页 > 编程语言 >《手把手教你》系列练习篇之14-python+ selenium自动化测试 -压台篇(详细教程)

《手把手教你》系列练习篇之14-python+ selenium自动化测试 -压台篇(详细教程)

时间:2024-06-09 15:03:54浏览次数:10  
标签:14 python selenium 宏哥 driver switch iframe frame

1. 简介

   本文是练习篇的最后一篇文章,虽然练习篇的文章到此就要和大家说拜拜了,但是我们的学习之路才刚刚开始。不要停下你的脚步,大步朝前走吧!比你优秀的人还在走着,我们有什么理由停下自己的脚步了,生命不止,学习亦是如此。好了,宏哥的毒鸡汤好

喝吧,喝够了就开始学习吧。

  本文主要是练习如何处理iframe切换、处理alert弹窗、获取当前页面全部信息、获取页面href属性和如何截图保存等等内容,希望小伙伴或者童鞋们喜欢哈!!!

2. 处理iframe切换

  本文介绍如何利用Selenium中方法,在不同iframe中切换。

问题:有时候我们发现元素定位没问题,在测试回放的过程,发现就是找不到元素报错。

2.1 示例一:

  由于没有找到合适的iframe网站,这里不好用代码举例,简单文字加图片来介绍。但是宏哥辗转反侧的睡不着,最后实在是没招了。于是自己写了一个简陋比较low的网页,利用iframe网页框架,把网页分成上下两个不同iframe控制的页面,把下面html代码保存到

一个记事本,然后修改名称为index.html。

2.2 index.html
<html>
<head><title>iframe test page</title></head>
<body>
<iframe id="frame1" src="https://www.baidu.com" name="slider" height="325" width="550"></iframe>
<br>
<iframe id="frame2" src="http://example.com" name="example" height="325" width="550"></iframe>
</body>
</html>

用本地浏览器打开如下图:

用firepath来获得百度文本输入框的XPath截图

看到了红圈位置不是显示Top Window,说明你要定位的目标元素在一个iframe里,如果要操作这个元素,首先需要从默认的Top Window,利用switch_to.frame('iframeid')方法来切换到具体的iframe,然后才能去操作目标元素。

正常百度页面,文本输入框截图

方法介绍:

driver.switch_to.frame("iframe1")
# 操作目标元素,这个目标元素在 iframe1里面,这里就是百度文本输入框输入文字
driver.switch_to.default_content() 
如果有具体项目页面利用了iframe, 自己动手写一下脚本。

2.3 示例二:

  宏哥最后终于找到了一个合适的demo来给小伙伴们或者童鞋们来用代码实际演练的例子如下:

步骤:

1.先确认你要操作的元素,是否存在与iframe中,如果元素在iframe中就需要切换

2.找到该iframe

3.切换到该iframe (两种方式)

   第一种方式:有三种方法,只是单纯的切换

   driver.switch_to.frame(1) #通过index(下标)
   driver.switch_to.frame('login_frame_qq') #通过name
   driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@name="login_frame_qq"]')) #通过webelement

   第两种方式:既等待元素可见又进行了iframe切换

 WebDriverWait(driver,20).until(EC.frame_to_be_available_and_switch_to_it('login_frame_qq'))

4.切换完后,就以这个iframe中的html为主html

5.返回默认的html页面,无论现在在那一层的iframe,执行一次即可。
 

 driver.switch_to.default_content()
2.3.1 代码实现:

2.3.2 参考代码:
# coding=utf-8

标签:14,python,selenium,宏哥,driver,switch,iframe,frame
From: https://blog.csdn.net/qq_23827149/article/details/139522584

相关文章

  • HNUCM-2024年春季学期《算法分析与设计》练习14
     问题A:1的个数题目描述输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。输入 输入一个整数(int类型)。输出这个数转换成2进制后,输出1的个数。样例输入 Copy5样例输出 Copy2#include<stdio.h>intmain(){intn,s=0;scanf("%d",&......
  • [无监督学习] 14.详细图解k-means 算法
    k-means算法把相似的数据汇总为簇的方法叫作聚类。k-means算法是一种聚类算法,该算法非常简单,所以被广泛应用于数据分析。概述k-means算法是一种有代表性的聚类算法。由于该算法简单易懂,又可以用于比较大的数据集,所以在市场分析和计算机视觉等领域得到了广泛的应用。我......
  • python-数据分析-Numpy-2
    数组对象的方法应用#-*-coding:utf-8-*-#数组对象的方法importmatplotlib.pyplotaspltimportnumpy#1、获取描述统计信息array1=numpy.random.randint(1,100,10)print(array1)#随机数组[64841052366431797]#计算总和、平均值、中位数pr......
  • python 多任务之多线程
    多线程线程是程序执行的最小单位,实际上进程只负责分配资源,而利用这些资源执行程序的是线程,也就是说进程是线程的容器,一个进程中最少有一个线程来负责执行程序,它可以与同属一个进程的其它线程共享进程所拥有的全部资源 为什么要选择线程,而不选择进程进程:就像同时和两个人......
  • python - pandas常用计算函数
    文中所用数据集有需要的可以私聊我获取学习目标 知道排序函数nlargest、nsmallest和sort_values的用法知道Pandas中求和、计数、相关性值、最小、最大、平均数、标准偏差、分位数的函数使用1排序函数导包并加载数据集importpandasaspd​#加载csv数据,返回df......
  • 超详解——python数字和运算——小白篇
    目录1.位运算2.常用内置函数/模块math模块:random模块:decimal模块:3.内置函数:总结:1.位运算位运算是对整数在内存中的二进制表示进行操作。Python支持以下常见的位运算符:按位与(&):两个二进制数对应位都为1时,结果的该位才为1。按位或(|):两个二进制数对应位有一个为1,结果......
  • 运筹学练习Python精解——指派问题
    练习8分配甲、乙、丙、丁4个人去完成A、B、C、D、E5项任务,每个人完成各项任务的时间见下表。由于任务数多于人数,故考虑:(1)任务E必须完成,其他4项中可任选3项完成;(2)其中有一人完成两项,其他每人完成一项。试分别确定最优分配方案,使完成任务的总时间为最少。人员\任务AB......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-005 考试座位号
    L1-005考试座位号每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着......
  • 【机器学习基础】Python编程07:五个实用练习题的解析与总结
    Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面:简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些库提供了......
  • 【机器学习基础】Python编程08:五个实用练习题的解析与总结
    Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面:简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。丰富的库支持:Python拥有大量的机器学习库,如scikit-learn、TensorFlow、Keras和PyTorch等,这些库提供了......