首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

selenium爬虫遇到弹窗——iframe定位

目录 问题描述 原因分析 解决方案 总结 问题描述 如上图所示,为某数据网站,自动登录时,点击登录button会出现弹窗让你输入账号密码,此时定位输入框send_keys发送参数,报错信息如下:找不到元素...,需要将页面装换到iframe下再对页面元素进行操作(大致可以理解为页中页,及一个页面里嵌套了一个页面,而selenium的操作网页的原理是依靠窗口句柄,当前句柄在外面窗口,定位元素在内部窗口,所以无法定位到元素...关于selenium的句柄切换详见下一篇文章,还没写!后面整理下再写,跟本次所要讲的切换类似又有点儿差异,有兴趣的可以百度一下,有前辈们贡献过!...driver.switch_to.frame() 同理,如果drive.switch_to_default_content()失效 请改用新操作:drive.switch_to.default_content() 【本文环境配置:selenium...版本:3.141.0;chrome版本:76.0.3809,两种写法都可以】 总结 #定位iframe #也可以用其他属下定位selenium常用定位方法,即iframe本身也是一个元素 iframe

94310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    selenium xpath定位

    说明:本篇博客基于selenium 4.1.0 selenium-xpath定位 element_xpath = driver.find_element(By.XPATH, 'xpath表达式') xpath...定位说明 xpath即为XML路径语言(XML Path Language),是由国际标准化组织W3C指定的,一种用来确定XML文档节点位置的语言 xpath定位优点 1.相较于其他定位方式,可支持更多定位方法...,如:布尔逻辑判断、模糊定位等 2.可支持web定位、Android app原生页面定位 xpath定位缺点 1.需要从头到尾解析整个页面,速度较慢 xpath调试方法 方法1:在浏览器开发者模式的elements...表达式为: 对比两种表达式,可以发现: 相对路径更简洁,方便阅读 相对路径更稳定,当前端页面有结构变动就容易引起绝对路径发生变化 因此,在项目中几乎都是使用相对路径进行定位

    1.1K00

    1.5 编写自定位ShellCode弹窗

    在笔者上一篇文章中简单的介绍了如何运用汇编语言编写一段弹窗代码,虽然简易ShellCode可以被正常执行,但却存在很多问题,由于采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统或系统重启过...自定位代码是一种常见的Shellcode技术,它使Shellcode能够在任何系统上运行,而无需考虑系统内存布局和代码地址等问题。...4.最终动态调用系列函数1.5.1 动态查找Kernel32基址首先我们需要通过汇编的方式来实现动态定位Kernel32.dll中的基址,你或许会有个疑问?...既然有了固定的查询定位公式,接下我们就使用WinDBG调试器来手工完成对Kernel32.dll地址的定位:小提示:Windbg是Windows Debugger的缩写,是一种微软提供的免费调试器工具,...0x1e380a6a // 与MessageBox的hash值比较 jne find_lib_functions // 下方的代码,就是我们的弹窗

    31620

    1.5 编写自定位ShellCode弹窗

    在笔者上一篇文章中简单的介绍了如何运用汇编语言编写一段弹窗代码,虽然简易ShellCode可以被正常执行,但却存在很多问题,由于采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统或系统重启过...自定位代码是一种常见的Shellcode技术,它使Shellcode能够在任何系统上运行,而无需考虑系统内存布局和代码地址等问题。...4.最终动态调用系列函数1.5.1 动态查找Kernel32基址首先我们需要通过汇编的方式来实现动态定位Kernel32.dll中的基址,你或许会有个疑问?...既然有了固定的查询定位公式,接下我们就使用WinDBG调试器来手工完成对Kernel32.dll地址的定位:小提示:Windbg是Windows Debugger的缩写,是一种微软提供的免费调试器工具,...0x1e380a6a // 与MessageBox的hash值比较 jne find_lib_functions // 下方的代码,就是我们的弹窗

    24420

    1.5 编写自定位ShellCode弹窗

    在笔者上一篇文章中简单的介绍了如何运用汇编语言编写一段弹窗代码,虽然简易ShellCode可以被正常执行,但却存在很多问题,由于采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统或系统重启过...自定位代码是一种常见的Shellcode技术,它使Shellcode能够在任何系统上运行,而无需考虑系统内存布局和代码地址等问题。...导出表 4.最终动态调用系列函数 1.5.1 动态查找Kernel32基址 首先我们需要通过汇编的方式来实现动态定位Kernel32.dll中的基址,你或许会有个疑问?...既然有了固定的查询定位公式,接下我们就使用WinDBG调试器来手工完成对Kernel32.dll地址的定位: 小提示:Windbg是Windows Debugger的缩写,是一种微软提供的免费调试器工具...0x1e380a6a // 与MessageBox的hash值比较 jne find_lib_functions // 下方的代码,就是我们的弹窗

    38530

    Selenium元素定位神器-ChroPath

    Selenium元素定位神器-ChroPath 目录 1、前言 2、简介 3、安装 4、操作 4.1、元素定位 4.2、生成脚本 4.3、录制脚本 1、前言 在进行Web自动化测试时,我们多多少少都会用到元素定位工具...但定位复杂路径的时候,如XPath定位方式,所获取到的元素路径没有精简,而是复杂的路径,这样会在后期维护定位元素时很不方便。...关于Selenium的元素定位详解,可查阅如下文章: Selenium元素定位(Python版) 2、简介 ChroPath是一款浏览器插件,支持主流浏览器(Chrome、Firefox等)。...如定位Downloads,给出的XPath定位路径。 //a[contains(text(),'Downloads')] 可以大大提高定位元素的效率。...录制的过程很像Selenium IDE。 将录制完成后的测试用例进行保存下载。

    3K10

    Python+Selenium 定位页面

    1.跳转到Frame/Iframe ,再定位元素 理解:frame的实质,frame中实际上是嵌入了另一个页面,而webdriver每次只能在一个页面识别,因此需要先定位到相应的frame,对那个页面里的元素进行定位...username=driver.find_element_by_name('email') username.clear() 1.1方法二 如果iframe没有name或id的话,则可以通过下面的方式定位...: #先定位到iframe elementi= driver.find_element_by_class_name('APP-editor-iframe') #再将定位对象传给switch_to_frame...完成操作后,可以通过switch_to.parent_content()方法跳出当前iframe,或者还可以通过switch_to.default_content()方法跳回最外层的页面 2.Xpath 层级定位...2.2 利用元素属性定位 地图有三个属性,href,name,class。

    1.3K10

    8.9 Selenium元素定位方式

    () tag_name定位 案例:打开我要自学网页面,在用户名输入框输入用户名“selenium” from selenium import webdriver from time import...定位 根据标签中属性class来进行定位的一种方法 from selenium import webdriver from time import sleep driver=webdriver.Firefox...Selenium极力推荐使用CSS 定位,而不是XPath来定位元素,原因是CSS 定位比XPath 定速度快,特别是在IE浏览器环境 前端开发人员就是用CSS Selector设置页面上每一个元素的样式...1.根据选项元素标签定位 from selenium import webdriver from time import sleep from selenium.webdriver.support.ui...Mac 环境Appium自动化测试环境搭建 众里寻他千百度—Appium Android 元素定位方式 Android自动化测试设备弹窗处理 Ubuntu+Docker+STF环境搭建 Mac OS环境搭建

    1.3K10

    selenium元素定位与操作

    说明:本篇博客基于selenium 4.1.0 在selenium中,想要对元素进行操作,一般需要如下步骤: 在浏览器中查看元素属性,便于selenium在页面中找到该元素 在代码中创建元素对象 元素操作...一共提供了八种定位方式,通过这些定位方式即可创建元素对象。...分别为: from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome...# 文本定位:仅可用于标签 element_partiallinktext = driver.find_element(By.PARTIAL_LINK_TEXT, '文本信息') # 文本模糊定位...子节点同样支持selenium的八种定位方式 以百度的"百度一下"为例,我们可以先找到其父节点再找到"百度一下": element = driver.find_element(By.CSS_SELECTOR

    86200

    彻底学会Selenium元素定位

    因此,本篇将详细介绍Selenium八大元素定位方法,以及在自动化测试框架中如何对元素定位方法进行二次封装,最后会给出一些在定位元素时的经验总结。...注意:本文出现的代码示例均以 Python3.10 + Selenium4.5.0 为准,由于网上大多数教程都是Selenium3,Selenium4相比于Selenium3会有一些新的语法,如果你还不了解...Selenium八大元素定位 所谓八大元素定位方式就是id、name、class_name、tag_name、link_text、partial_link_text、xpath、css_selector...Xpath不仅可以用于Selenium,还适用于Appium,是一个万能的定位方式。 Xpath有一个缺点,就是速度比较慢,比CSS_SELECT要慢很多,因为Xpath是从头到尾一点一点去遍历。...Selenium框架官方推荐使用CSS定位,因为CSS定位效率高于XPATH。 CSS是一种标记语言,控制元素的显示样式,就必须找到元素,在CSS标记语言中找元素使用CSS选择器。

    6.6K31

    python+selenium-元素定位

    最近在学习web自动化测试,web自动化测试中元素定位是基本功也是很重要的一环,常用的元素定位方式网上都有很多的,一般采用强大的xpath方式来定位,xpath中又包含了很多其他方法。...当然,在学习元素定位之前,需要要对前端要有一定的了解,比如HTML,CSS 百度输入框 ?...("//input[strats-with(@name,'wd')]"),表示:找到一个input节点,它的特征是有一个以 wd开头的name属性,注意是starts,有个s,还有python+selenium...的xpath中我只看到了starts-with的方法,不知道有没有ends-with的方式,在java+selenium中是有ends-with的方法。...如果有文本信息就可以用contains方法,组合的方式能解决很多常见的定位问题。

    1.5K10
    领券