jjzjj

Selenium常见报错解决

gcs12345 2024-06-27 原文

在使用selenium进行自动化测试时,运行时经常出现一些报错,以下为一些常见的报错,以及相应的解决办法。

一、元素找不到

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//span[text()="删除"]"}

分析原因及解决方法:

1. 元素的xpath写错了,可以复制到浏览器F12中校验xpath是否正确

2. 页面未加载完成,运行该行代码时导致无法找到该元素,在改行代码前面加上几秒的睡眠,如time.sleep(3)

未切入到该元素的对应的iframe下,通过driver.switch_to.frame(id/name)切换到对应的iframe下。

二、元素不可交互

Message: element not interactable  (Session info: chrome=106.0.5249.103)

分析原因及解决方法:

1. 脚本执行过程中,人为干预了浏览器的操作导致页面无法交互,可以在脚本执行时不进行人为操作电脑

2. 元素被隐藏了,例如鼠标的悬停在元素上,相应的操作才出现,可以使用ActionChains(driver).move_to_element(element).perform()方法来使鼠标悬停在元素上(注意修改方法),使元素显示然后再点击相应的操作。

三、元素无法点击

ERROR - Message: element click intercepted: Element <button data-v-e9c15436="" type="button" class="el-button el-button--primary el-button--small">...</button> is not clickable at point (329, 156). Other element would receive the click: <div id="gLoadingView" class="gloading" style="">...</div>

分析原因及解决方法:

1. 元素未加载完成,运行该行代码时导致无法找到该元素,在改行代码前面加上几秒的睡眠,如time.sleep(3)。

2. 元素在iframe里,导致无法点击,可以通过切入iframe后再进行点击。

3. 通过js的方法来点击元素,示例如下

element=t.dr.find_element_by_xpath('//span[text()="提交"]/parent::button')
self.dr.execute_script("arguments[0].click();", element)

四、切换iframe时,同一级下存在多个iframe且iframe的没有name和id属性

分析原因:无法通过 正常的iframe的id和name来切换到想要的iframe,这种其实是因为开发代码不规范导致

解决方法:可以通过tag为iframe来找到所有的iframe,然后根据index切换到对应的iframe,示例如下

self.dr.switch_to.default_content()

self.dr.switch_to.frame(self.dr.find_elements_by_tag_name("iframe")[3])

self.dr.switch_to.frame(self.dr.find_elements_by_tag_name("dialog_frame")[1])

五、浏览器自带弹窗处理

分析现象及原因:浏览器自带的弹窗,无法通过正常的元素定位点击确定来关闭掉

解决方法:通过切换到alert,然后接受或者取消来关闭弹窗,示例如下

alert=self.dr.switch_to_alert()
time.sleep(1)
alert.accept() #接受弹窗
alert.dismiss() #取消弹窗

六、日期选择框无法输入

分析原因:日期选择框无法像人工一样选择选择指定的日期

解决方法:通过移除日期输入框的readonly属性,输入对应格式的日期即可,示例如下

self.dr.execute_script('arguments[0].removeAttribute(\"readonly\")',self.dr.find_element_by_xpath('//*[@id="starttime"]'))

self.dr.find_element_by_xpath('//*[@id="page-content"]/div[1]/form/input[1]').clear()

self.dr.find_element_by_xpath('//*[@id="page-content"]/div[1]/form/input[1]').send_keys('2022-05-01')

有关Selenium常见报错解决的更多相关文章

  1. 屏幕录制为什么没声音?检查这2项,轻松解决 - 2

    相信很多人在录制视频的时候都会遇到各种各样的问题,比如录制的视频没有声音。屏幕录制为什么没声音?今天小编就和大家分享一下如何录制音画同步视频的具体操作方法。如果你有录制的视频没有声音,你可以试试这个方法。 一、检查是否打开电脑系统声音相信很多小伙伴在录制视频后会发现录制的视频没有声音,屏幕录制为什么没声音?如果当时没有打开音频录制,则录制好的视频是没有声音的。因此,建议在录制前进行检查。屏幕上没有声音,很可能是因为你的电脑系统的声音被禁止了。您只需打开电脑系统的声音,即可录制音频和图画同步视频。操作方法:步骤1:点击电脑屏幕右下侧的“小喇叭”图案,在上方的选项中,选择“声音”。 步骤2:在“声

  2. 【高数】用拉格朗日中值定理解决极限问题 - 2

    首先回顾一下拉格朗日定理的内容:函数f(x)是在闭区间[a,b]上连续、开区间(a,b)上可导的函数,那么至少存在一个,使得:通过这个表达式我们可以知道,f(x)是函数的主体,a和b可以看作是主体函数f(x)中所取的两个值。那么可以有,  也就意味着我们可以用来替换 这种替换可以用在求某些多项式差的极限中。方法: 外层函数f(x)是一致的,并且h(x)和g(x)是等价无穷小。此时,利用拉格朗日定理,将原式替换为 ,再进行求解,往往会省去复合函数求极限的很多麻烦。使用要注意:1.要先找到主体函数f(x),即外层函数必须相同。2.f(x)找到后,复合部分是等价无穷小。3.要满足作差的形式。如果是加

  3. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  4. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  5. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  6. ruby - 下载位置 Selenium-webdriver Cucumber Chrome - 2

    我将Cucumber与Ruby结合使用。通过Selenium-Webdriver在Chrome中运行测试时,我想将下载位置更改为测试文件夹而不是用户下载文件夹。我当前的chrome驱动程序是这样设置的:Capybara.default_driver=:seleniumCapybara.register_driver:seleniumdo|app|Capybara::Selenium::Driver.new(app,:browser=>:chrome,desired_capabilities:{'chromeOptions'=>{'args'=>%w{window-size=1920,1

  7. ruby - 如何更快地解决 project euler #21? - 2

    原始问题Letd(n)bedefinedasthesumofproperdivisorsofn(numberslessthannwhichdivideevenlyinton).Ifd(a)=bandd(b)=a,whereab,thenaandbareanamicablepairandeachofaandbarecalledamicablenumbers.Forexample,theproperdivisorsof220are1,2,4,5,10,11,20,22,44,55and110;therefored(220)=284.Theproperdivisorsof284are1,2,

  8. ruby - 为什么这些方法没有解决? - 2

    这个问题在这里已经有了答案:WhydoRubysettersneed"self."qualificationwithintheclass?(3个答案)关闭29天前。给定这段代码:classSomethingattr_accessor:my_variabledefinitialize@my_variable=0enddeffoomy_variable=my_variable+3endends=Something.news.foo我收到这个错误:test.rb:9:in`foo':undefinedmethod`+'fornil:NilClass(NoMethodError)fromtes

  9. 电脑启动后显示器黑屏怎么办?排查下面4个问题,快速解决 - 2

    电脑启动出现显示器黑屏是一个相当常见的问题。如果您遇到了这个问题,不要惊慌,因为它有很多可能的原因,可以采取一些简单的措施来解决它。在本文中,小编将介绍下面4种常见的电脑启动后显示器黑屏的原因,排查这些原因,快速解决! 演示机型:联想Ideapad700-15ISK-ISE系统版本:Windows10一、显示器问题如果出现电脑启动后显示器黑屏的情况。那么首先您需要检查一下显示器是否正常工作。您可以通过更换另一个显示器或将当前显示器连接到另一台计算机来检查显示器是否存在问题。如果问题仍然存在,那么您可以排除显示器故障的可能性。 二、显卡问题如果您的电脑配备了独立显卡,那么显卡故障也可能是导致电脑

  10. 关于Qt程序打包后运行库依赖的常见问题分析及解决方法 - 2

    目录一.大致如下常见问题:(1)找不到程序所依赖的Qt库version`Qt_5'notfound(requiredby(2)CouldnotLoadtheQtplatformplugin"xcb"in""eventhoughitwasfound(3)打包到在不同的linux系统下,或者打包到高版本的相同系统下,运行程序时,直接提示段错误即segmentationfault,或者Illegalinstruction(coredumped)非法指令(4)ldd应用程序或者库,查看运行所依赖的库时,直接报段错误二.问题逐个分析,得出解决方法:(1)找不到程序所依赖的Qt库version`Qt_5'

随机推荐