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

selenium之 坑(StaleElementReferenceException: Message: Element not found in the cache...)

原因就在这里:你点击第二个时已经是新页面,当然找不到之前页面的元素。这时,他会问“可是明明元素就在那里,没有变,甚至我是回退回来的,页面都没有变,怎么会说是新页面?”。...当然,不仅仅这一种情况,如果你执行以下的操作,都有可能错人: refresh,不论你是主动刷新还是页面自动刷新 back,已经跳转到了其他页面,然后你用driver.back()跳回来,这也是一张新的页面了...跳转到了新的页面,这张新页面上有一些元素跟之前页面是长得一样的,这也是一张新的页面了。...比如:一排分页按钮,你点击下一页跳转到了第二页,想要还用原来的元素操作到下一页,那也是不可能的了。...很简单: 只要刷新页面之后重新获取元素就行,不要提前获取一组元素,然后去循环操作每一个元素,这种情况还是获取元素的个数,然后在循环中获取相应位置的元素,在用的时候才去获取,这样你就获取到最新的id了,也不会出现错人的尴尬了

1.1K10

Python Selenium自动化详解

要是大佬看到了不会冒犯到吧,不会吧…… 安装 Selenium 包 Pip 安装 sudo pip install selenium 源码包安装 下载源码 sudo python setup.py install...Chrome: 注意,先在设置 —> 关于Chrome 里查看Chrome版本号,再去我给的淘宝源里。再注意,在淘宝源里版本时,如果没有本浏览器的版本的话,就自己版本号的上一个。...不要动你那个界面,打开DevTools,找到搜索框的元素,右键 - Copy - CopyXpath,再回到代码这。...注意,find_element_by_xpath这个函数很微妙,它的工作是在整个页面一个元素,敲黑板,是一个。还有一个函数是find_elements_by_xpath,的是一堆元素。...按照上次那样,打开Devtools,找到搜索按钮的元素,接着Copy —> Copy Xpath。

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

Python Selenium 自动化详解

要是大佬看到了不会冒犯到吧,不会吧…… # 安装 Selenium 包 # Pip 安装 sudo pip install selenium # 源码包安装 源码链接 sudo python...Chrome: 注意,先在设置 --> 关于 Chrome 里查看 Chrome 版本号,再去我给的淘宝源里。再注意,在淘宝源里版本时,如果没有本浏览器的版本的话,就自己版本号的上一个。...不要动你那个界面,打开 DevTools,找到搜索框的元素,右键 - Copy - CopyXpath,再回到代码这。...注意, find_element_by_xpath 这个函数很微妙,它的工作是在整个页面一个元素,敲黑板,是一个。还有一个函数是 find_elements_by_xpath ,的是一堆元素。...按照上次那样,打开 Devtools,找到搜索按钮的元素,接着 Copy --> Copy Xpath。

61930

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

这时,你还可能会问“可是明明元素就在那里,没有变,甚至我是回退回来的,页面都没有变,怎么会说是新页面?”。...其实呢是在操作的过程中页面发生了变化,刷新了,虽然表面上看起来两个元素长得一模一样,事实上是每一个元素都有自己的一个ID号。 用代码(Python)来证明!...分析: refresh,不论你是主动刷新还是页面自动刷新 back,已经跳转到了其他页面,然后你用driver.back()跳回来,这也是一张新的页面了 跳转到了新的页面,这张新页面上有一些元素跟之前页面是长得一样的...解决: 只要刷新页面之后重新获取元素就行,不要提前获取一组元素,然后去循环操作每一个元素,这种情况还是获取元素的个数,然后在循环中获取相应位置的元素,在用的时候才去获取,这样你就获取到最新的id了,也不会出现错人的尴尬了...我今天就遇到一个,其实之前也遇到了,只是没有着重记录一下而已。 有一个四个菜单,分别要去带四个传入的数据点击四次,检查是否能到另外一个页面,页面返回是否正常。

5K50

Python改变生活 | 利用Selenium实现网站自动签到

前情提要 小五收藏了一些论坛网站,经常需要自己登录签到,以此来获得积分金币等等。 步骤倒是并不复杂,只需要填写账号密码登录,然后点击签到即可。 ? 天天手动太容易忘了这件事啦。...然后我们需要前往(http://chromedriver.storage.googleapis.com/index.html)找到与浏览器相匹配的版本,没有一模一样的选择最近的版本也可以。 ?...下面我们就可以正式用python自动签到了。 代码及讲解 首先打开我要登录的网站,具体域名就不分享给大家了。...执行代码的时候会自行去寻找chromedriver.exe(在python目录下寻找)。如果我们前面没有把它放在固定的路径下,就需要在这里指定chromedriver.exe路径。...这里不用担心,Selenium提供了很多种定位DOM元素的方法,各有各的特点和优势。今天就主要使用 by_xpath() 这个方法来定位元素,这个方法比较灵活方便,大部分属性都可以通过它来定位。

1.5K20

面试题十四期-selenium+python面试题目总结

selenium+python面试题目总结】 diligence redeems stupidity 勤能补拙 ✎✎✎第一小节>> 1....Selenium可以被部署到windows.linux.mac平台上,支持的语言有java/python/ruby/.net/perl 特点: ·支持录制回放 ·多种方式对页面元素进行定位并操作...IDE: 是firefox的插件,可以录制/回放/测试脚本 2) Selenium RC:支持程序语言(java/C#/python/ruby)编写测试用例; selenium其他测试框架集成,比如java...checkbox.click() # 通过for循环全选所有的checkbox Checkboxes.pop().click() #取消勾选一些checkbox,pop(-1)=pop()表示一组元素的最后一个.../div[1]) 找到弟弟后父亲然后哥哥 Find_element_by_css_selector(‘div#d+div’) 表示id=d的div后面紧跟着的div Find_element_by_css_selector

2.5K20

《手把手教你》系列技巧篇(八)-java+ selenium自动化测试-元素定位大法之By id(详细教程)

findElement接口支持八种查找网页元素的方法,相信看过宏哥写的python版的selenium,都知道宏哥将其称为8中元素定位大法。...宏哥这里说的定位和我们平时说的不一样,Selenium能够模拟用户去浏览器页面上执行对应(输入,点击,清除,提交)等操作,它是凭什么方式去寻找到页面的元素Selenium没有视觉、听觉等。...Selenium通过在页面上寻找元素位置,找到元素后,然后对元素进行相应的操作,Selenium寻找元素位置的方法,称之为定位。...在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回元素句柄来定位元素 findElement() 方法返回一个元素, 如果没有找到...当页面元素有 id属性的时候,尽量使用 id来定位。没有的话,再选择其他定位方法。cssSelector 执行速度快,推荐使用。

91530

技术分享 | Web 控件定位与常见操作

在做 Web 自动化时,最根本的就是操作页面上的元素,首先要能找到这些元素,然后才能操作这些元素。工具或代码无法像测试人员一样用肉眼来分辨页面上的元素。...bg s_ipt_wr quickdelete-wrap,最后 span 的子元素 input: Python 版本 driver.find_element_by_xpath\ ("//form...input,请注意,这里使用了双斜杠//,它可以找到子孙节点,而斜杠/只能找到子节点: Python 版本 driver.find_element_by_xpath("//form[@id='form...属性为 active 的元素,然后 > 表示 class 属性为 active 的元素的子节点 Python 版本 driver.find_element_by_css_selector('.logo-big...get_attribute(‘value’),元素的坐标 location,元素的大小 size Python 版本 import logging from selenium import webdriver

1.3K20

数据技术|爬虫一下,百度付费文档轻松得,不用花钱,不用花钱,不用花钱!!!

这些都太麻烦了,用爬虫就可以轻松搞定付费文档的文字部分内容。 之前我们已经给大家介绍了基础爬虫的写法,这次我们给大家讲一些更高端的使用方法。...❷ 界面交互 通过元素选取,我们能够找到元素的位置,我们可以根据这个元素的位置进行相应的事件操作,例如输入文本框内容、鼠标单击、填充表单、元素拖拽等等。...document.getElementsByClassName("moreBtn goBtn")[0].click();' driver.execute_script(js) 这样就搞定了,如果大家写其他爬虫时不能直接模拟一些操作...还是和之前一样找到内容部分,然后查看这部分的代码(左键单击查看元素)。...我们要做的就是python+selenium+phantomjs,一个高效稳定的爬虫就搞定了!

57.1K91

一文搞懂浏览器自动化测试框架selenium

(转自百度百科) 2、python中的selenium使用 代码链接:https://github.com/princewen/python3_crawl 先来看一段完整的的代码: from selenium...,随后找到了百度输入框元素,在输入框中输入python并回车,相当于使用百度搜索python,使用显式等待页面内容出现,最后我们打印了url、cookie和页面源代码。...在隐式等待中,只需要指定一个等待时间,当我们获取元素时,如果超过等待时间还没有获取到元素,会抛出异常。...webdriver.Chrome() browser.get('https://www.zhihu.com/explore') """隐式等待""" browser.implicitly_wait(10) """如果这个元素没有找到的话...() browser.get('https://www.taobao.com/') wait = WebDriverWait(browser,10) #参数是元组,还有其他一些等待条件 input =

1.1K50

Python自动刷网课

总有一些奇奇怪怪的学习任务,需要我们刷够一定的时长去完成,这很多都是不太令人感兴趣的文字或是视频,而这些课都有共同的特点就是会间隔一定时间发出弹窗,确认屏幕前的我们是否还在浏览页面。...每次靠人工去点击,会严重影响我们做其他正事的效率。 ? 最近小李也需要刷够一定的学习时长。于是乎,我便找了好兄弟Python来帮忙。下面我们就用Python来实现自动化刷课吧!...常规的,我们需要在对应的位置,找到网页上对应的元素,并通过程序写入。 ?...而这里有个相对麻烦的东西,即验证码,而这个验证码是白底黑字,是简单的字母数字形式,自然而然地就想到了Python的OCR库 tesserocr 。...因为selenium操作页面切换可能没有那么块,sleep延时一下等页面切换了再进行元素的查找。 弹出框处理 问题解决之后我们就来到了课程学习的页面。 ?

3.5K81

illenium什么水平_尼采读本

Selenium RC 是开拓性的,因为没有其他产品能让你使用自己喜欢的语言来控制浏览器。这就是 Selenium 1。...WebDriver 项目的目标就是要解决 Selenium 的痛点。 到了 2008 年,Selenium 和 WebDriver 两个项目合并。...Selenium 有着丰富的社区和商业支持, WebDriver 显然代表着未来的趋势。两者的合并为所有用户提供了一组通用功能,并且借鉴了一些测试自动化领域最闪光的思想。...当然Selenium2 WebDriver也提供了一些其他的方式,在上述三类方式条件不足,查找无效的时候,可以通过这些其他方式来查找。这些方式将会在后续的内容中讲述。...或者 其他非常用字符 => 或者,构造方法中,传递 this.byChar 要把查找到元素的返回给调用的地方:必须要有返回值,类型是 WebElement def _locate_element(self

3.5K20

软件测试人工智能|熟练使用web控件定位技巧,提升测试工作效率!

简介在做 Web 自动化时,最根本的就是操作页面上的元素,首先要能找到这些元素,然后才能操作这些元素。工具或代码无法像测试人员一样用肉眼来分辨页面上的元素。...首先寻找 id 为 sf 的 form 元素,然后再寻找它的子元素 span,span 的 class 属性为 sec-input-box,最后 span 的子元素 input,以下代码演示。...(By.xpath("//form[@id='sf']/span[@class='sec-input-box']/input"));下面的定位也可以找到这个 input,请注意,这里使用了双斜杠//,它可以找到子孙节点...,而斜杠/只能找到子节点,以下代码演示。...css selector 找到 class 属性值为 active 的元素,然后>表示 class 属性为 active 的元素的子节点,以下代码演示。

12810

《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)

XPath 在文档树中某个节点既可以向前搜索,也可以向后搜索,CSS定位只能在文档树中向前搜索,XPath的定位速度比CSS 慢一些。...先找到一个相对好定位的元素,再根据这个元素和要定位的相对位置进行定位,可以解决一些元素难以定位的问题。 5.4.1轴示意图 ?...3.parent可指定要查找的当前节点的直接父节点 例如,父节点是个div,即可写成parent::div,如果要元素不是直接父元素,则不可使用parent,可使用ancestor,代表父辈、祖父辈等节点...定位网页中的python: //定位思路: //(1)先定位Java,然后找到Java的父节点li, //(2)然后再找li的兄弟节点,即包含Python的那个li标签, //(3)然后再找li的孩子节点...后边还有一些,敬请期待。

3.2K40

Python教程:selenium模块用法教程

2.38,并非2.9国内镜像网站地址:http://npm.taobao.org/mirrors/chromedriver/2.38/最新的版本去官网:https://sites.google.com...find_element_by_xpath # 强调: # 1、上述均可以改写成find_element(By.ID,'kw')的形式 # 2、find_elements_by_xxx的形式是查找到多个元素...1、selenium只是模拟浏览器的行为,而浏览器解析页面是需要时间的(执行css,js),一些元素可能需要过一段时间才能加载出来,为了保证能查找到元素,必须等待2、等待的方式分两种:隐式等待:在browser.get...browser.switch_to.parent_frame() #切回父frame,就可以查找到了 tag2=browser.find_element_by_id('textareaCode...') print(tag2)finally: browser.close()7.其他模拟浏览器的前进后退import timefrom selenium import webdriverbrowser

1.7K20

技术分享 | Web 控件定位与常见操作

原文链接 在做 Web 自动化时,最根本的就是操作页面上的元素,首先要能找到这些元素,然后才能操作这些元素。工具或代码无法像测试人员一样用肉眼来分辨页面上的元素。...span,span 的 class 属性为 bg s_ipt_wr quickdelete-wrap,最后 span 的子元素 input: Python 版本 driver.find_element_by_xpath...input,请注意,这里使用了双斜杠//,它可以找到子孙节点,而斜杠/只能找到子节点: Python 版本 driver.find_element_by_xpath("//form[@id='form...: css_selector 找到 class 属性为 active 的元素,然后 > 表示 class 属性为 active 的元素的子节点 Python 版本 driver.find_element_by_css_selector...get_attribute('value'),元素的坐标 location,元素的大小 size Python 版本 import logging from selenium import webdriver

1.1K10

​如何自动化Salesforce应用程序

但是,Salesforce增加了大多数Web应用程序中没有的额外同谋,例如Shadow DOM,动态IFrame和动态元素。...如果没有具有大量自定义代码的适当框架,则将Salesforce自动化是正确的噩梦。 不过,不用担心,因为我找到了内置了Salesforce自动化支持的免费工具。...动态元素 对于自动化工程师来说,没有什么比带有动态元素的UI烦人的多了,动态元素会在每次运行测试脚本时更改其定位符。 Salesforce开发的应用程序是该部门的惯常行为。...当然,您可以使用JavascriptExecutor方法来解决某些Shadow DOM / Selenium问题,但是它很繁琐,难以维护,并且给脚本增加了复杂性。 这又需要额外的努力。...那么,TestProject如何处理我们之前使用诸如Salesforce之类的应用程序解决的上述一些问题? TestProject如何处理IFrame 在Selenium中,有一个上下文的概念。

1.5K30
领券