解决:selenium.common.exceptions.JavascriptException: Message: javascript error: $ is not defined


解决:selenium.common.exceptions.JavascriptException: Message: javascript error: $ is not defined





背景

在使用之前的代码时,报错:
Traceback (most recent call last):
File “xxx”, line xx, in
driver.execute_script(“$(arguments[0]).click()”,dbt)
File “D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py”, line 405, in execute_script
return self.execute(command, {“script”: script, “args”: converted_args})[“value”]
File “D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py”, line 345, in execute
self.error_handler.check_response(response)
File “D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\errorhandler.py”, line 229, in check_response
raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.JavascriptException: Message: javascript error: $ is not defined



报错问题


Traceback (most recent call last):
  File "xxx", line xx, in <module>
        driver.execute_script("$(arguments[0]).click()",dbt)
  File "D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py", line 405, in execute_script
    return self.execute(command, {"script": script, "args": converted_args})["value"]
  File "D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py", line 345, in execute
    self.error_handler.check_response(response)
  File "D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
...
selenium.common.exceptions.JavascriptException: Message: javascript error: $ is not defined


报错翻译

主要报错信息内容翻译如下所示:


Traceback (most recent call last):
  File "xxx", line xx, in <module>
        driver.execute_script("$(arguments[0]).click()",dbt)
  File "D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py", line 405, in execute_script
    return self.execute(command, {"script": script, "args": converted_args})["value"]
  File "D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py", line 345, in execute
    self.error_handler.check_response(response)
  File "D:\develop\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\errorhandler.py", line 229, in check_response
    raise exception_class(message, screen, stacktrace)
...
selenium.common.exceptions.JavascriptException: Message: javascript error: $ is not defined

翻译:


追溯(最近一次通话):
文件“xxx”,第xx行,在<module>中
driver.execute_script(“$(arguments[0]).click()”,dbt)
文件“D:\development\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py”,第405行,在execute_script中
return self.execute(命令,{“script”:脚本,“args”:converted_args})[“value”]
文件“D:\development\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\webdriver.py”,第345行,执行中
self.error_handler.check_response(响应)
文件“D:\development\python\Python3\Python37\lib\site-packages\selenium\webdriver
emote\errorhandler.py”,第229行,在check_response中
引发exception_class(消息、屏幕、堆栈)
...
selenium.com.mon.exceptions。JavascriptException:消息:javascript错误:未定义$



报错位置代码


        driver.execute_script("$(arguments[0]).click()",dbt)



报错原因

经过查阅资料,发现出现Python的"selenium.common.exceptions.JavascriptException: Message: javascript error: $ is not defined"错误的原因是页面没有加载jquery, 但却对页面执行jquery的$。

$号是jQuery“类”的一个别称,$()构造了一个jQuery对象。所以,“$()”可以叫做jQuery的构造函数。

  1. $()可以是$(expresion),即css选择器、Xpath或html元素,也就是通过上述表达式来匹配目标元素。

  2. $()可以是$(element),即一个特定的DOM元素。如常用的DOM对象有document、locaTIon、form等。

小伙伴们按下面的解决方法即可解决!!!



解决方法

要解决这个错误,这里总结了以下几个解决办法。

方法一

用javascrapy代替要执行的js里的jquery语句。

方法二

给页面加载jquery,即在执行js里的jquery语句之前, 先执行下面的js语句

var bod = document.getElementByTagName('body')
var script = document.createElement("script")
script.setAttribute("src", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.0.min.js") // 后面的链接可以根据需要修改
bod.appendChild(script)

注意:加载jquery需要时间



今天的分享就到此结束了

欢迎点赞评论关注三连

在这里插入图片描述

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ninghes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值