python_use 2024-02-03 19:38 采纳率: 66.7%
浏览 11
已结题

python selenium读不到用户数据

用python selenium自动化控制msedge时,只会弹出一个空白的data页,而且edge显示不了访问历史以及收藏的网址,也没有一些网站的缓存,我猜想可能和edge_option 中的add_arguement有关,但去官网查资料却什么也没有,我尝试 了--no-sandbox也没用

另外 ,我的电脑无法使用selenium3.x控制edge, 只能用msedge-selenium-tools



from msedge.selenium_tools import Edge, EdgeOptions

options = EdgeOptions()
options.use_chromium = True
options.add_experimental_option('excludeSwitches',['enable-automation']) 
options.add_argument('--disable-blink-features=AutomationControlled')  # 禁用启用Blink运行时的功能
options.add_argument("--start-maximized")
options.add_argument("--no-sandbox")
options.binary_location = r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'

webdriver = Edge(options=options, executable_path='./msedgedriver.exe')

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-02-03 19:40
    关注

    引自免费微信小程序:皆我百晓生

    在您遇到的问题中,Python Selenium与Microsoft Edge的集成似乎无法正常加载用户数据(如访问历史、收藏夹网址和缓存)。这可能是因为Edge在使用Selenium时以无痕模式或特定的配置运行。以下是一些解决思路和建议:

    1. 隐私和数据加载问题

      • 默认情况下,Selenium驱动浏览器通常会禁用加载用户数据的功能以避免测试之间的相互影响。如果您希望加载用户的个人数据,可以尝试移除可能导致新标签页不加载用户数据的选项。
    2. 尝试启用用户数据加载 目前没有直接的命令行参数可用于加载用户数据,但您可以试试通过设置用户数据目录来让Edge加载用户配置文件:

      # 请替换下面路径为您实际的Edge用户数据目录
      user_data_dir = r'C:\Users\<YourUsername>\AppData\Local\Microsoft\Edge\User Data'
      
      options.add_argument(f"--user-data-dir={user_data_dir}")
      

      注意:这种方式可能因Edge安全策略和版本差异而不一定有效。

    3. 检查Edge配置 确保您的Edge浏览器没有其他扩展或组策略限制了访问历史、收藏夹等信息的显示。

    4. 权限与沙箱模式 --no-sandbox 参数对于Edge来说并不适用,因为Edge基于Chromium并有自己的安全机制。通常在Linux环境下用于绕过沙箱模式,在Windows上不是必需的。

    5. 关于Edge和Selenium工具链 您提到只能使用msedge-selenium-tools,这是针对新版Edge(Chromium内核)的正确做法。确保您使用的msedgedriver版本与Edge浏览器版本匹配。

    6. 调试与日志 为了更好地诊断问题,可以增加日志输出级别以便查看更详细的错误信息:

      from selenium.webdriver import DesiredCapabilities
      
      desired_capabilities = DesiredCapabilities.EDGE
      desired_capabilities['loggingPrefs'] = {'browser': 'ALL'}
      
      webdriver = Edge(options=options, executable_path='./msedgedriver.exe', desired_capabilities=desired_capabilities)
      
      # 在执行脚本后获取日志
      for entry in webdriver.get_log('browser'):
          print(entry)
      

    如果以上尝试均无效,那么可能需要深入研究Edge的官方文档或者联系微软支持以了解是否有特定于自动化测试时加载用户数据的解决方案。同时,请关注Edge浏览器和msedgedriver的最新版本更新,看看是否有对这一需求的支持改进。

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

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 创建了问题 2月3日