标签:自动化测试,selenium,定位,iframe
frame标签有frameset、frame、iframe三种,frameset和其它普通标签没有区别,不会影响正常定位,而frame与iframe对selenium定位而言是一样的。
Selenium有以下方法对frame进行操作。
示例网站:http://sahitest.com/demo/framesTest.htm
示例脚本:
from selenium import webdriver
from time import sleep
class TestFrame(object):
def setup(self):
self.driver = webdriver.Chrome()
self.driver.get("http://sahitest.com/demo/framesTest.htm")
def test_frame(self):
top = self.driver.find_element_by_name("top")
# 切换到上面的frame
self.driver.switch_to.frame(top)
#点击上面frame中的Link Test链接,打开新页面
self.driver.find_element_by_xpath("/html/body/table/tbody/tr/td[1]/a[1]").click()
#切换到主页面
self.driver.switch_to.default_content()
sleep(3)
# 切换到下面的frame
second = self.driver.find_element_by_xpath("/html/frameset/frame[2]")
self.driver.switch_to.frame(second)
# 点击下面frame中的Form Test链接,打开新页面
self.driver.find_element_by_xpath("/html/body/table/tbody/tr/td[1]/a[2]").click()
sleep(2)
self.driver.quit()
if __name__ == '__main__':
frame = TestFrame()
frame.test_frame()
以上来自:极客时间课程:selenium自动化测试课程学习总结。
来源:https://blog.csdn.net/aovenus/article/details/121181039


猜你喜欢
- 1、某汽车网站地址2、使用firefox查看后发现,此网站的信息未使用json数据,而是简单那的html页面而已3、使用pyquery库中的
- 大家好,我是不学前端的前端程序员,事情是这个样子的,前几天不是双十一预购秒杀嘛由于我女朋友比较笨,手速比较慢,就一直抢不到,她没抢到特价商品
- 1、基本语法SELECT查询列表FROM表名WHERE筛选表达式;2、按条件表达式筛选条件运算符:>,<,=,!=,<&g
- 使用原生SQL语句进行对数据库操作,可完成数据库表的建立和删除,及数据表内容的增删改查操作等。其可操作性很强,如可以直接使用“show da
- Serializer序列化器定义Serializer1. 定义方法Django REST framework中的Serializer使用类来
- 目录Blazor Server 应用程序中进行 HTTP 请求一、第三方 Web API 概览二、从 Blazor Sever 应用程序开始
- 一、文件内容的分发 应用场景:分批读取共有358086行内容的txt文件,每取1000条输出到一个文件当中# coding=utf-8# 分
- vue-router切换组件时使组件不销毁默认地,使用vue-router切换组件时,离开的组件会被销毁,新进入地组件会创建。那么,有时候,
- match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只
- Python的装饰器(decorator)是一个很棒的机制,也是熟练运用Python的必杀技之一。装饰器,顾名思义,就是用来装饰的,它装饰的
- 本文实例讲述了Python最长公共子串算法。分享给大家供大家参考。具体如下:#!/usr/bin/env python # find an
- MySQL从5.1.4版开始带有一个压力测试工具mysqlslap,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单。通过
- 人口普查人口数量变化图1 第七次人口普查不同省份总人口import pandas as pdfrom collections import
- 本文实例讲述了PHP设计模式:装饰器模式Decorator。分享给大家供大家参考,具体如下:1. 概述  
- 需要建立2个文件,一个作为客户端,一个作为服务端文件一 作为客户端client,文件二作为服务端serverudp的特点是不需要建立连接文件
- 一、下载git可以官网下载,傻瓜步骤安装就行下载好之后需要在idea中配置git,在File》settings》version Contro
- 针对之前安装mysql的笔记进行了总结,分享给大家。第一步:下载mysql-5.7.17-winx64解压版本:http://dev.mys
- vue-cli遇到的eslint的坑报错Do not access Object.prototype method 'hasOwnP
- 前言MySQL 8.0.26于2021年7月20日发布。一个变化需要注意,在这一版本里面改动了大量的变量名称,大量包含master和 sla
- 在Navicat中,时间戳(timestamp)格式的数据表现为:查询某一天的数据SELECT * FROM my_tableWHERE `