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

Selenium WebDriver找不到元素的三种情况

今天抽点时间总结下Selenium WebDriver找不到元素的情况。 当然这里说的是css或者XPath都没写错,定位准确,也并非使用了不稳定的定位语句。...在当前页面找不到这个元素了,但是你自己手动复制到页面开发者工具上查看明明有啊,为啥在代码里面就找不到了呢?...解决: 只要刷新页面之后重新获取元素就行,不要提前获取一组元素,然后去循环操作每一个元素,这种情况还是获取元素的个数,然后在循环中获取相应位置的元素,在用的时候才去获取,这样你就获取到最新的id了,也不会出现找错人的尴尬了...情况二:iframe原因定位不到元素需要切换Iframe 【参考此文】 这种情况一般发生在有内嵌的iframe的情况下,需要切换一下iframe 另外注意的是有的页面会有多个iframe,找不到元素同样是没有切换...可参考博文:Selenium使用之——添加等待时间的三种方式

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

    selenium元素定位

    一、selenium元素定位 ‍‍‍‍总结一下元素定位方式,因为项目中会用到,爬虫也会用到,也是为了方便自己和方便后续的同事,总结一下。...1.id定位 from selenium import webdriver from selenium.webdriver.common.by import By # 单个查找 find_element_by_id...(后续会更新实际案例) 属性 解释 备注 parent 表示当前节点的父节点元素 用的相对多一些 ancestor 表示当前节点的祖先节点元素 child 表示当前节点的子元素 用的相对多一些 self...表示当前节点的自身元素 ancestor-or-self 表示当前节点的及它的祖先节点元素 descendant-or-self 表示当前节点的及它们的后代元素 following-sibling...表示当前节点的后序所有兄弟节点元素 preceding-sibling 表示当前节点的前面所有兄弟节点元素 following 表示当前节点的后序所有元素 preceding 表示当前节点的所有元素

    85520

    Selenium元素定位

    Selenium常用的8种元素基本定位方式 find_element_by_id() find_element_by_name() find_element_by_class_name() find_element_by_tag_name...send_keys("www.testclass.cn")#相对路径 find_element_by_link_text() 通过find_element_by_link_text()定位下图百度首页上的一组文本链接...,所以返回的是一个list队列.我们可以通过选择具体第几个元素进行单个元素定位; 百度首页右上角有新闻、hao123、地图、视频、贴吧、学术一些文字链接,查看源码可以发现,这些链接都有共同的class,...详细元素定位代码如下: #coding=utf-8 #www.testclass.cn #Altumn #2018-11-13 from selenium import webdriverimport...这样你就可以通过元素的属性值判断你要定位的元素: driver.find_elements_by_class_name("mnav")[0].click()#点击“新闻”; driver.find_elements_by_class_name

    1.1K10

    Selenium常用的元素等待方法

    写在前面 日常的UI自动化测试,单步调试的时候元素可以定位到,并且可以正常操作,但是在跑测试案例流程的时候反而报错。...这时就需要考虑是否界面的切换,或者功能的跳转缓慢导致元素未加载完成就执行了操作,所以我们需要加上元素等待。WebDriver提供了几种类型的等待:强制等待、显式等待和隐式等待。...隐式等待相当于设置全局等待,在定位元素时,对所有元素设置的超时时间。implicitly_wait()默认参数的单位为秒,默认设置为0。本例中设置等待时长为10秒。...这个10秒的设置并不针对页面上的某一个元素进行等待,也不是一个固定的等待时间。...如果设置了隐式等待,当元素定位时,如果元素可以正常定位,则继续执行;如果元素定位失败,将以轮询的方式不断地判断元素是否被定位到。直到超出设置时长(10秒)还没有定位到元素,则抛出异常。

    1.7K20

    Selenium - 获取页面跳转之后的链接

    起因 今天在使用Flask+Selenium开发的时候遇到了一个天坑,这个页面会自动跳转到新页面,但是我使用driver.current_url无法获取到最新的页面url,获取到的还是driver.get...(url)的 解决 在我百度了将近四个小时的情况下,终于找到了最稳妥的方法,只需要使用driver.switch_to.window重新切换一下标签页,就可以获取到最新的url了 # 获取全部标签页 window...= driver.window_handles # 将激活标签页设置为最新的一项(按自己业务改) driver.switch_to.window(window.pop()) 然后运行,完美获取!!!...结尾 我是不会告诉你,我还使用了很多弯弯绕绕的方法,包括driver.refresh(),虽然不知道为什么要使用这个。 呵,可爱又奇怪的Selenium ~

    3.2K20

    selenium webdriver——设置元素等待

    如今大多数Web应用程序使用ajax技术,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成,这给定位元素的定位增加了困难, 如果因为在加载某个元素时延迟而造成ElementNotVisibleException...(不可见元素异常)的情况出现,那么就会降低自动化脚本的稳定性,设置元素等待可改善这种问题造成的不稳定。...WebDriver提供了两种类型的等待: 显示等待: 具体格式如下: from selenium import webdriver from selenium.webdriver.common.by import...is_displayed() 该元素是否用户可以见 move_to_element(menu) 移动鼠标到一个元素中,menu上面已经定义了他所指向的哪一个元素 to_element...:元件移动到 perform() 执行所有存储的行为 隐式等待: 通过一定的时长等待页面上某元素加载完成,如果超出了设置的时长元素还没有被加载,则抛出NoSuchElementException

    1.3K10

    Selenium操作Frame中的页面元素

    这种情况下,如果直接去定位嵌套在Frame页面中的元素就会抛出NoSuchElementException异常。所以在操作嵌套在Frame框架上页面元素前,需要将页面焦点切换到Frame中。...嵌套多个Frame的页面,这种情况我们就需要一层层的跳转,从第一层跳转到要定位元素所在的那层框架。处理完业务如果需要跳转到其他层框架,首先需要跳转到最外层的页面,然后再逐一跳转Frame框架。...以下链接复制到浏览器打开: https://www.testclass.cn/test_html/frame/frameset.html 前端界面显示如下: ? html代码显示如下: ?...上面主要介绍了关于多Frame框架页面中元素Selenium的操作方法,IFrame和Frame的处理方法类似,但是html页面有所不同。...接下来也会针对Iframe中的页面元素Selenium操作方法出一篇文章,各位敬请期待...

    2.5K30

    selenium元素定位与操作

    说明:本篇博客基于selenium 4.1.0 在selenium中,想要对元素进行操作,一般需要如下步骤: 在浏览器中查看元素属性,便于selenium在页面中找到该元素 在代码中创建元素对象 元素操作...://5naek7Xdni92ioieAsbMwiy9Vzm.png) 创建元素对象 selenium一共提供了八种定位方式,通过这些定位方式即可创建元素对象。...以当前element为父节点,查找该元素中的子节点。...子节点同样支持selenium的八种定位方式 以百度的"百度一下"为例,我们可以先找到其父节点再找到"百度一下": element = driver.find_element(By.CSS_SELECTOR...,无论元素在不在浏览器的可视窗口内 截图 element.screenshot('study_selenium/resource/element_shot.png') # 截屏并保存到文件中

    87100

    8.9 Selenium元素定位方式

    元素定位 元素的定位应该是自动化测试的核心,要想操作一个元素,首先应该识别这个元素象。...--定位到input标签中为kw的元素 driver.find_element_by_xpath("//input[@id='kw']").send_keys("Selenium") # 定位input...标签中name属性为wd的元素 driver.find_element_by_xpath("//input[@name='wd']").send_keys("Selenium") # 定位所有标签元素中...极力推荐使用CSS 定位,而不是XPath来定位元素,原因是CSS 定位比XPath 定速度快,特别是在IE浏览器环境 前端开发人员就是用CSS Selector设置页面上每一个元素的样式,无论那个元素的位置有多复杂...text 返回元素内容 clear()清除元素内容 send_keys() 传送元素值 click() 点击操作 submit()提交操作 get_attribute()获取元素的属性 代码实践 #注意调用的

    1.3K10

    彻底学会Selenium元素定位

    因此,本篇将详细介绍Selenium八大元素定位方法,以及在自动化测试框架中如何对元素定位方法进行二次封装,最后会给出一些在定位元素时的经验总结。...注意:本文出现的代码示例均以 Python3.10 + Selenium4.5.0 为准,由于网上大多数教程都是Selenium3,Selenium4相比于Selenium3会有一些新的语法,如果你还不了解...driver.find_element(By.TAG_NAME, "标签名称") 举栗: driver.find_element(By.TAG_NAME, "input") LINK_TEXT 定位超链接标签...只能使用精准匹配(即a标签的全部文本内容),该方法只针对超链接元素(a 标签),并且需要输入超链接的全部文本信息。...Selenium框架官方推荐使用CSS定位,因为CSS定位效率高于XPATH。 CSS是一种标记语言,控制元素的显示样式,就必须找到元素,在CSS标记语言中找元素使用CSS选择器。

    7.2K32

    Selenium元素定位神器-ChroPath

    Selenium元素定位神器-ChroPath 目录 1、前言 2、简介 3、安装 4、操作 4.1、元素定位 4.2、生成脚本 4.3、录制脚本 1、前言 在进行Web自动化测试时,我们多多少少都会用到元素定位工具...但定位复杂路径的时候,如XPath定位方式,所获取到的元素路径没有精简,而是复杂的路径,这样会在后期维护定位元素时很不方便。...关于Selenium的元素定位详解,可查阅如下文章: Selenium元素定位(Python版) 2、简介 ChroPath是一款浏览器插件,支持主流浏览器(Chrome、Firefox等)。...Chrome浏览器打开要抓取元素定位的页面,之后按F12快捷键,打开开发者工具,即可进行元素定位。...录制的过程很像Selenium IDE。 将录制完成后的测试用例进行保存下载。

    3.4K10

    Selenium必须掌握的元素定位方法

    Web端的UI自动化测试,目前使用比较多的就是Python+Selenium。当前一些UI自动化测试工具也是基于Selenium做开发的。...最近经常有童鞋后台询问selenium元素定位方法,其实网上学习资料很多,只要你肯动手,都可以搜的到。元素定位对于自动化测试来说是比较重要而且繁琐的一件事。...Driver-info: chromedriver=2.37.544315,platform=Windows NT 10.0.17134 x86_64) 是否打开了多个窗口 在页面操作过程中有时候点击某个链接会弹出新的窗口...例如,百度主页工具栏的”搜索设置”功能。默认就是不可见的,这时我们需要鼠标悬停操作,让设置的下拉内容显示出来。所以,鼠标悬停“设置”链接上就是前提条件。 ?...如果统计结果是0,说明你的定位方法找不到任何元素,元素本身不存在。如果大于1,说明你这种定位方法不是唯一的。那么就需要把元素打印出来,查看第几个是你所需要的元素: ?

    4.7K20

    python+selenium-元素定位

    最近在学习web自动化测试,web自动化测试中元素定位是基本功也是很重要的一环,常用的元素定位方式网上都有很多的,一般采用强大的xpath方式来定位,xpath中又包含了很多其他方法。...当然,在学习元素定位之前,需要要对前端要有一定的了解,比如HTML,CSS 百度输入框 ?...xpath元素定位的主要方法 首先要了解xpath中一些常用的语法规则和常用符号的意义,比如双斜杠// 单斜杠/ 星号* 等等 1. ...("//input[strats-with(@name,'wd')]"),表示:找到一个input节点,它的特征是有一个以 wd开头的name属性,注意是starts,有个s,还有python+selenium...的xpath中我只看到了starts-with的方法,不知道有没有ends-with的方式,在java+selenium中是有ends-with的方法。

    1.5K10

    如何使用Selenium WebDriver查找错误的链接?

    如果您的Web产品包含许多页面(或链接),导致404错误(或找不到页面),则搜索引擎(例如Google)上的产品排名也将受到严重影响。删除无效链接是SEO(搜索引擎优化)活动的组成部分之一。...页面顶部的HTML标记损坏,JavaScript错误,错误的HTML / CSS自定义,嵌入式元素损坏等都可能导致链接断开。...客户端(即浏览器)可以在服务器准备等待的时间内发送相同的请求。 410(已去) HTTP状态代码比404(找不到页面)更永久。410表示该页面已消失。...通过CSS选择器“ a”属性找到Web元素,可以找到被测URL上存在的链接(即cnds博客)。...4.通过状态码验证链接 如果在步骤(3)中发送的HTTP请求的HTTP响应代码为404(即,找不到页面),则表示该链接是断开的链接。对于未断开的链接,HTTP状态代码为200。

    6.7K10
    领券