【自主探索】发现答案:为何自己寻找解答比直接获取更有效?

简介: 这篇文章探讨了自主探索问题答案的重要性,并通过解决Edge浏览器无头模式配置的问题来说明这一点,同时提醒读者要勇于怀疑和验证每个答案,包括自己的答案。

一、关于回答

每当咱们遇到问题的时候,总会是先询问百度,然后再去其他地方验证答案,但是有些人总是会调皮一些,并不是完全给出正确答案,需要读者自己去取证,譬如一些解决问题的版本号,他不明说,需要在正确的版本解决,这不把读者给直逼逼到这儿吐槽。

二、无头模式

2.1、Edge无头模式

在选择selenium工具做UI自动化(浏览器兼容)的时候,为了提升效率和跨平台而选择无头模式,所以会参照chrome浏览器的实现方式,这初始化浏览器对象的时候,给它一些建议

  • chrome浏览器的无头建议如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options 

ch_options = Options()
ch_options.add_argument("--headless")  # => 为Chrome配置无头模式

# 在启动浏览器时加入配置
driver = webdriver.Chrome(chrome_options=ch_options) # => 注意这里的参数 
driver.get('http://baidu.com')

driver.quit()
  • 那么Edge浏览器的无头模式也是这样?
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.add_argument("--headless")
driver = webdriver.Edge(executable_path="./msedgedriver.exe",Options=edge_options)

driver.get("http://www.baidu.com")
driver.quit()
  • 所以执行报错了

Edge Options 没有这个add_argument方法,所以题主也去看了看,确实没有。

三、版本原罪

3.1、selenium3确实没有Edge的Options的add_argument方法

那么如何正确解决Edge浏览器的无头模式呢?

PATH = "msedgedriver.exe"
EDGE = {
   
            "browserName": "MicrosoftEdge",
            "version": "",
            "platform": "WINDOWS",
            "ms:edgeOptions": {
   
                'extensions': [],
                'args': [
                    '--headless',
                    '--disable-gpu',
                    '--remote-debugging-port=9222',
                ]}
        }
driver = webdriver.Edge(executable_path=path, capabilities=EDGE)
3.2、要勇敢怀疑每个答案,哪怕是自己的答案

当参照以往的经验不能解决实际问题时,就该想想是不是方法不对,尽管思路对了,但是实现却不能完全照搬,在编码的世界里,因为绝大多数都是搬运工,所以需要下很大功夫能看懂源码,做起事来才能事半功倍。

  • 借鉴一下,应该还有不一样的解决办法:pip install msedge-selenium-tools
from selenium import webdriver
from msedge.selenium_tools import EdgeOptions
from msedge.selenium_tools import Edge

edge_options = EdgeOptions()
edge_options.use_chromium = True
# 设置无界面模式,也可以添加其它设置
edge_options.add_argument('headless')
driver = Edge(options=edge_options)
r = driver.get('https://www.baidu.com')
print(driver.title)
driver.quit()

四、总结

在为了实现UI自动化的时候,更多不是工作,而是兴趣,甚至可以说是挑战,那么下篇咱们讲讲为什么题主要写UI自动化、要用selenium、还需要无头模式?主要解决什么问题?等等一系列问题。
本篇呢,主要是提醒各位,在很多答案上,没有人会告诉你一遍就会成功的经验,都需要自己不断摸索,不断去尝试挑战。

相关文章
|
机器人 API
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
钉钉机器人的运行和消息接收是通过Webhook和Stream两种方式实现的
2068 5
|
传感器 Java API
Spring揭秘:Aware接口应用场景及实现原理!
Aware接口赋予了Bean更多自感知的能力,通过实现不同的Aware接口,Bean可以轻松地获取到Spring容器中的其他资源引用,像ApplicationContext、BeanFactory等。 这样不仅增强了Bean的功能,还提高了代码的可维护性和扩展性,从而让Spring的IoC容器变得更加强大和灵活。
780 0
Spring揭秘:Aware接口应用场景及实现原理!
|
编解码 监控 数据格式
【开源视频联动物联网平台】GB/T28181和SIP的区别
【开源视频联动物联网平台】GB/T28181和SIP的区别
961 1
|
存储 内存技术
USB的VID,PID
USB的VID,PID
918 0
|
前端开发 JavaScript 安全
解锁React Server Components:彻底改变前端渲染方式
解锁React Server Components:彻底改变前端渲染方式
|
10月前
|
设计模式 人工智能 自然语言处理
3个月圈粉百万,这个AI应用在海外火了
不知道大家还记不记得,我之前推荐过一个叫 Agnes 的 AI 应用,也是当时在 WAIC 了解到的。
958 2
|
7月前
|
人工智能 运维 监控
进阶指南:BrowserUse + AgentRun Sandbox 最佳实践
本文将深入讲解 BrowserUse 框架集成、提供类 Manus Agent 的代码示例、Sandbox 高级生命周期管理、性能优化与生产部署策略。涵盖连接池设计、安全控制、可观测性建设及成本优化方案,助力构建高效、稳定、可扩展的 AI 浏览器自动化系统。
1043 47
|
存储 Java API
小试牛刀-SpringBoot集成SOL链
java工程师:如何在java/springboot中使用solana区块链呢?不用担心,现在solanaj来了!
474 1
|
前端开发 JavaScript 关系型数据库
如何开发生产小工单中的产品管理板块(附架构图+流程图+代码参考)
生产小工单中的产品管理板块是制造业数字化管理的关键环节,涵盖产品信息、生产工序、产品列表和基础设置四大功能模块。通过系统化管理,企业可实现对产品属性、工艺流程及资源配置的精准控制,提升生产效率并减少误差与浪费。本文详解了各功能模块的设计逻辑、业务流程及开发实现方案,并提供示例代码,助力企业构建高效、灵活的产品管理系统。
|
人工智能 数据可视化 程序员
史上最全盘点:一文告诉你低代码(Low-Code)是什么?为什么要用?
在后疫情时代,低代码(Low-Code)+ 人工智能(AI)的组合被认为是加速社会数字化转型的重要技术。低代码通过可视化和模型驱动的理念,结合云原生和多端体验技术,显著提升了开发效率和灵活性。它不仅让专业开发者受益,还使业务人员成为“平民开发者”,弥补了专业人才缺口。此外,低代码平台能够快速响应市场变化,帮助企业构建各种应用,如四川某制造企业仅用一个月就搭建出一套内部协作和生产监控系统。结合AI的能力,低代码平台还能实现智能化的建议和优化,进一步提升用户体验和开发速度。

热门文章

最新文章