selenium执行js中自定义方法报错

主页面源码:
主页面源码
js代码:
js代码
python代码:

def getimg():
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')  #不用打开图形界面
    options.add_argument('--dns-prefetch-disable')
    options.add_argument('--no-referrers')
    options.add_argument('--disable-dev-shm-usage')  #大量渲染时候写入/tmp而非/dev/shm
    options.add_argument('--disable-gpu')
    options.add_argument('--single-process')
    options.add_argument('--disable-audio')
    options.add_argument('--no-sandbox')    #让 chrome 在 root 权限下运行
    options.add_argument('--ignore-certificate-errors')
    options.add_argument('--allow-insecure-localhost')
    options.binary_location = r"/usr/bin/google-chrome" #手动指定使用的浏览器位置

    mobile_emulation = {
        "deviceMetrics": { "width": 415, "height": 415, "pixelRatio": 1.0 },
        "userAgent": "Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"
    }
    options.add_experimental_option("mobileEmulation", mobile_emulation)

    driver = webdriver.Chrome(options=options)
    driver.get(
        'https://xxx.xxx.xx.cn/xx/xx/trend?fuxxde=' + sys.argv[1])

    time.sleep(8)

    img = driver.execute_script("return getCanvasUrl()")
    print(img)

    driver.close()

当通过 selenium 在 driver.execute_script() 中执行 getCanvasUrl() 时,提示:

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

麻烦哪位大神解答下,求指教。

阅读 2.6k
1 个回答

sleep时间长一点看看呢?
首先确保代码执行到了,可以把图形话界面打开或者调用截图,看下是不是不兼容。
执行没有问题慢的话你可以在写入方法的时候注入一个隐藏的元素,然后等待这个元素显示等待获取到后再执行js

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题