qq_42771061 2024-02-22 19:44 采纳率: 100%
浏览 268
已结题

请教Python爬虫报错window.crypto.getRandomValues is not a function是什么原因啊?(相关搜索:自动化)

selenium.common.exceptions.JavascriptException: Message: javascript error: window.crypto.getRandomValues is not a function
如上,只是自动化打开一个网页然后填入用户名和密码,但是只能打开网页,之后就报错,无法填入用户名和密码

  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-22 19:46
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据你提供的问题描述,报错信息"window.crypto.getRandomValues is not a function"表明在你的Python爬虫中使用了JavaScript的window.crypto.getRandomValues函数,但是该函数在你的环境中并不存在,导致报错。

    这个问题通常是因为Selenium使用的是一个模拟浏览器环境,而在这个模拟环境中,并没有window.crypto.getRandomValues函数,因为它通常用于生成加密强度的随机数,而模拟环境中不需要这样的功能。

    解决这个问题的一种方法是通过配置Selenium的浏览器选项来模拟一个环境,该环境中存在window.crypto.getRandomValues函数。可以尝试切换浏览器驱动器或者调整其配置,例如使用Chrome或Firefox等浏览器,并确保其版本和Selenium WebDriver版本兼容。

    另外,如果你的目标是填写用户名和密码,可以考虑直接通过Selenium模拟输入的方式,而不是依赖于JavaScript函数。你可以使用find_element_by_id或其他类似的方法找到用户名和密码输入框,然后使用send_keys方法输入相应的内容。

    下面是一个简单的示例代码,用于通过Selenium输入用户名和密码:

    from selenium import webdriver
    
    # 初始化浏览器
    driver = webdriver.Chrome()
    
    # 打开网页
    driver.get("https://example.com")
    
    # 找到用户名和密码输入框,并输入相应内容
    username_input = driver.find_element_by_id("username")
    password_input = driver.find_element_by_id("password")
    
    username_input.send_keys("your_username")
    password_input.send_keys("your_password")
    
    # 可选:提交表单
    password_input.submit()
    
    # 关闭浏览器
    driver.quit()
    

    通过这种方式,你可以避免使用JavaScript函数,从而避免了window.crypto.getRandomValues is not a function的错误。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月6日
  • 已采纳回答 2月27日
  • 创建了问题 2月22日