selenium处理iframe和动作链

selenium处理iframe和动作链

iframe

iframe就是一个界面里嵌套了其他界面,这个时候selenium是不能从主界面找到子界面的属性,需要先找到子界面,再去找子界面的属性

动作链(拖动)

1.from selenium.webdriver import ActionChains

2.实例化一个动作链对象:action = ActionChains(浏览器对象)

3.click_and_hold(div)

4.move_by_offset(x,y)向x,y移动像素

5.perform()让动作链立刻执行

6.action.release()释放动作链对象

from selenium import webdriver
import time
from selenium.webdriver import ActionChains

chrome=webdriver.Chrome("chromedriver")

url="https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"

chrome.get(url)

time.sleep(5)

#找到了子界面
chrome.switch_to.frame('iframeResult')
#找到子界面是div
div=chrome.find_element_by_id("draggable")

#创建动作链
action=ActionChains(chrome)

#点击长按指定标签
action.click_and_hold(div)

for i in range(5):
    #向x偏移17,向y偏移2  perform()执行动作链
    time.sleep(0.3)
    action.move_by_offset(17,2).perform()

time.sleep(5)
#释放动作链
action.release()

chrome.quit()

原文地址:https://www.cnblogs.com/zx125/p/11487521.html

时间: 2024-10-10 15:23:32

selenium处理iframe和动作链的相关文章

爬虫04 /asyncio、selenium\规避检测、动作链、无头浏览器

目录 4.asyncio.selenium\规避检测.动作链.无头浏览器 1. 协程asyncio 2. aiohttp多任务异步爬虫 3. selenium的使用 4. 动作链 5. 12306模拟登录分析 6. selenium规避风险 7. 无头浏览器 总结: 4.asyncio.selenium\规避检测.动作链.无头浏览器 1. 协程asyncio 协程基础 特殊的函数 就是async关键字修饰的一个函数的定义 特殊之处: 特殊函数被调用后会返回一个协程对象 特殊函数调用后内部的程序语

python selenium中iframe切换、window切换方法

一.selenium中iframe切换方法: 方法一:switch_to.frame frame函数中提供了三种定位方法: driver.switch_to.frame('frame_name') driver.switch_to.frame(1) driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0]) 以腾讯课堂为例: from selenium import webdriver from time

Selenium之动作链(ActionChains)

用selenium做自动化,有时候会遇到需要模拟鼠标操作才能进行的情况,比如单击.双击.点击鼠标右键.拖拽等等.而selenium给我们提供了一个类来处理这类事件--ActionChains selenium.webdriver.common.action_chains.ActionChains(driver) 这个类基本能够满足我们所有对鼠标操作的需求. 1.ActionChains基本用法 首先需要了解ActionChains的执行原理,当你调用ActionChains的方法时,不会立即执行

python+selenium:iframe框架中动态id如何切换

方法一:通过索引,id,name,WebElement定位 from selenium import webdriverdriver = webdriver.Firefox()driver.switch_to.frame(0) # 1.用frame的index来定位,第一个是0# driver.switch_to.frame("frame1") # 2.用id来定位# driver.switch_to.frame("myframe") # 3.用name来定位# d

selenium 切换iframe

# iframe -- html 内部的 html # 1. 识别:你要操作的元素,是否在 iframe 当中 F12中 查看元素绝对路径# 2. 进入iframe 中 from selenium.webdriver.common.by import Byfrom selenium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support imp

Selenium向iframe富文本框输入内容

目录 前言 只输入纯文本 通过JS注入HTML代码 前言 在使用Selenium测试一些CMS后台系统时,有时会遇到一些富文本框,如下图所示: 整个富文本编辑器是通过iframe嵌入到网页中的,手动尝试输入内容,发现内容是输入到iframe页面的body中的, 这种富文本框怎么输入呢? 我们也可以直接在body的源码上点击右键选择Edit HTML,输入相应的html代码,达到向富文本框输入的目的,如下下图: 以下是使用Selenium的操作方法 只输入纯文本 如果只输入不带格式的纯文本,可以先

一个关于java+selenium之iframe定位问题

最近做使用java+selenium做一个测试.遇到两个问题,寻找很久解答方案.最终解决了. ① 第一个问题是处理 js 事件弹出对象前未给与反应时间. 具体描述:一般情况获取网络刷新的元素基本会使用selenium的智能等待方法获取.关于这点不做解释.直接贴上代码参考. private static WebElement getElement(WebDriver driver, String type, String value) { return (WebElement) new WebDr

[JavaScript]JavaScript处理iframe的动作

随着W3C一声令下,几年前使用非常频繁的frameset + frame已完成使命,光荣退伍.作为frameset的替代方案(姑且这么称吧),iframe的使用也多了起来.较frameset方案,iframe在使用上更加灵活,文档结构更加友好. 本文就js操作iframe在不同浏览器(没错,又是浏览器兼容…)的差异性做一些说明,力求总结出一个适应于所有主流浏览器的方案,笔者只测试了IE 6/7/8(以下简称IE)和FireFox 5.0(以下简称FF). 约定与定义 iframeElement:

python+selenium 对于iframe的切入切出

发现问题:在对http://www.126.com自动化测试登陆邮箱的时候,总是不能定位到登陆名和密码.不管是用class,xpath,id,css等方法均是不可以.后来仔细查看,才发现这个登陆内嵌的,即iframe,所以要对其切入才能定位到对于的元素上去.解决办法:1.首先对于iframe的内嵌html,用 switch_to.frame切入 iframe 才能获得其中的元素.2.当要获取 iframe外部元素,用switch_to_default_content()切出iframe .如果不