草庐IT

【趣解Bug】解决‘WebDriver‘ object has no attribute ‘find_element_by_xpath‘问题

编程小猪猪 2023-04-11 原文

今天换了个电脑,之前在旧电脑里运行的自动化测试脚本突然失灵了,真的让人头秃,先看看问题

报错信息中显示WebDriver没有属性find_element_by_xpath,这怎么可能,这些代码在之前电脑里运行了千百遍,不可能说失效就失效的,悲伤持续了一秒钟,我就拿出百度大法,果然有解决方案:

​#引入模块
from selenium.webdriver.common.by import By

#改写方法
dr.find_element(By.XPATH,"my xpath")

1. 引入By模块 

2. find_element_by_xpath方法改为find_element方法,同时方法参数从原来的一个变成了两个

我试用用了一番,果然能正常运行了,可是新的问题出现了,我的脚本大部分都是使用的find_element_by_xpath方法,这时全部改为find_element方法,可谓工作量真的不小啊,难道真的要这样做吗,我就不信邪了,再次回到最初的问题,为什么一换电脑,自动化脚本就失效了,我的猜测应该是电脑环境的不同导致的,因此我就熟练的重装的chrome,更新到最新版,同时ChromeDriver工具也更新到匹配版本,具体操作,查看:【工具篇】ChromeDriver的下载与安装_编程小朱 ZZ的博客-CSDN博客

这下就应该解决问题了吧,可是实验结果还是‘WebDriver‘ object has no attribute ‘find_element_by_xpath‘,这是怎么回事,环境也一致了,还是不能解决问题,怎么办?

代码是一样的代码,浏览器是一样的浏览器,ChromeDriver是一样的ChromeDriver,版本一致,还能有啥不一致的?

网上解决问题的方式是改代码,而我的代码在旧电脑上流畅运行,要是有问题,我就倒立写代码!

倒不倒立还是小事,当前最主要的先改bug,既然代码出错,最有效的方式还是回归代码,我一行行的检查它的拼写错误以及调用逻辑,愣是看不出有啥问题,可是一运行就‘WebDriver‘ object has no attribute ‘find_element_by_xpath‘,盯着这个错误看了足足5秒钟,我悟了,WebDriver没有find_element_by_xpath方法,并不是这个方法的错误,是WebDriver的错误,这个WebDriver来自selenium,冤有头债有主,铁定selenium出错了,没想到啊,没想到,堂堂的selenium竟然出这么个大漏洞,感觉要上热搜了,激动颤抖的小手连键盘都敲不稳了,为了让自己能稳住,我从头到尾梳理了一遍,这一梳理就惊出了一身冷汗,是不是版本的问题,这个想了无数次的问题再次出现在脑海中,既然换了新电脑,涉及到的所有环节的版本是否保持一致,既然selenium出现了问题,会不会selenium版本不一致,我慌忙在两个电脑的终端分别输入pip show selenium,新电脑显示Version:4.4.3,旧电脑显示:4.2.0,果然!

在新电脑中卸载selenium,并安装指定版本4.2.0

pip uninstall selenium

pip install selenium==4.2.0

再次运行自动化脚本,流畅完美。

还是自己学艺不精,差点闹笑话,哈哈哈。

有关【趣解Bug】解决‘WebDriver‘ object has no attribute ‘find_element_by_xpath‘问题的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby-on-rails - Nokogiri:使用 XPath 搜索 <div> - 2

    我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll

  3. ruby-on-rails - capybara ::ElementNotFound:无法找到 xpath "/html" - 2

    我正在学习http://ruby.railstutorial.org/chapters/static-pages上的RubyonRails教程并遇到以下错误StaticPagesHomepageshouldhavethecontent'SampleApp'Failure/Error:page.shouldhave_content('SampleApp')Capybara::ElementNotFound:Unabletofindxpath"/html"#(eval):2:in`text'#./spec/requests/static_pages_spec.rb:7:in`(root)'

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

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

  5. 【高数】用拉格朗日中值定理解决极限问题 - 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.要满足作差的形式。如果是加

  6. 深度学习部署: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

  7. ruby - Sort_by Ruby,一个降序,一个升序 - 2

    我已经搜索过这个问题的答案,但没有成功,有一个类似的问题,但答案在这种情况下不起作用,它按数字项目排序。SimilarQuestion-Thatdidnotwork我正在尝试使用ruby​​的sort_by对一个项目进行降序排序和另一个升序排序。我只能找到一个。代码如下:#PrimarysortLastNameDescending,withtiesbrokenbysortingAreaofinterest.people=people.sort_by{|a|[a.last_name,a.area_interest]}任何指导肯定会有所帮助。示例数据:输入罗素,逻辑欧拉,图论伽罗瓦,抽象代

  8. 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

  9. ruby-on-rails - ActiveRecord 的 find_or_create* 方法是否存在根本性缺陷? - 2

    有几种方法:first_or_create_by、find_or_create_by等,它们的工作原理是:与数据库对话以尝试找到我们想要的东西如果我们找不到,就自己做保存到数据库显然,并发调用这些方法可能会使两个线程都找不到它们想要的东西,并且在第3步中一个线程会意外失败。似乎更好的解决方案是,创建或查找即:提前在您的数据库中创建合理的唯一性约束。如果你想保存一些东西,就保存它如果有效,那就太好了。如果它因为RecordNotUnique异常而无法工作,它已经存在,太好了,加载它那么在什么情况下我想使用Rails内置的东西而不是我自己的(看起来更可靠)create_or_find?

  10. 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

随机推荐