上面说
ChromeDriver是一个实现W3C WebDriver标准的独立服务器
看起来W3C WebDriver标准只定义了自动化程序和Chromedriver之间的接口。Chromedriver充当HTTP服务器,从自动化程序获取命令。
但是ChromeDriver如何与Chrome通信呢?
还是通过HTTP协议?
如果是,我们在哪里可以得到关于细节的留档?Chrome内部的哪个组件负责处理来自ChromeDrive的命令?它是内置铬合金还是只是Chrome的延伸?
为了便于查找,我将anwser从评论移到这里。
Chrome驱动程序通过基于websocket的Chrome DevTools协议控制Chrome浏览器。本文给出了更多细节
Selenium的核心是WebDriver,它是一个远程控制界面,支持用户代理的内省和控制。WebDriver提供了一个平台和语言中性线协议,作为进程外程序远程指示web浏览器行为的一种方式,因此可以在许多浏览器中互换运行指令集。
Selenium WebDriver既指语言绑定,也指单个浏览器控制代码的实现,通常称为WebDriver。WebDriver是一个API和协议,它定义了一个与语言无关的接口,用于控制web浏览器的行为。每个浏览器都有一个特定的WebDriver实现,称为驱动程序。驱动程序是负责向下委托给浏览器的组件,负责处理与Selenium和浏览器之间的通信。
WebDriver的最低要求是通过驱动程序与浏览器对话,通信方式有两种:
ChromeDriver是一个实现W3C WebDriver标准的独立服务器。ChromeDriver可用于Android上的Chrome和桌面上的Chrome(Mac、Linux、Windows和ChromeOS)。驱动程序与浏览器在同一系统上运行。这可能是,也可能不是,测试本身正在执行的同一个系统,并且是直接通信的示例。
但是,与浏览器的通信也可以是通过Selenium Server或远程WebDriver进行的远程通信。远程网络驱动程序在与驱动程序和浏览器相同的系统上运行。
还可以使用Selenium Server或Selenium Grid进行远程通信,这两种服务器都可以与主机系统上的驱动程序进行通信。
WebDriver协议被组织成命令。每个带有规范中定义的方法和模板的HTTP请求表示单个命令,因此每个命令生成单个HTTP响应。作为对命令的响应,远程端将运行一系列称为远程端步骤的操作。这些提供了远程端接收特定命令时所采取的操作序列。
远程端是一个HTTP服务器,从客户端读取请求,并通常通过TCP套接字写入响应。在该规范中,通信被建模为特定本地端和远程端之间的数据传输,远程端可以向其写入字节和读取字节。关于这种联系如何运作以及如何建立的确切细节是一个更大的话题,超出了这个问题的范围。建立连接后,远程端必须从连接中读取字节,直到可以从数据构造完整的HTTP请求为止。如果无法构造完整的HTTP请求,远程端必须关闭连接、返回状态代码为500的HTTP响应或返回错误代码为unknown error的错误。
我想在VS 2010 C#中使用Selenium Web驱动程序打开Chrome浏览器,导航到某个网页,然后关闭驱动程序,但保持浏览器打开。我意识到,我将不得不手动关闭浏览器后,我同意这一点。 到目前为止我有: 我已经尝试了以下所有作为最后一行 有什么想法吗?
我正在使用ChromeDriver V2.24,我的系统中有Chrome Browser52(未安装,可执行文件)。 NosuchSessionException:没有这样的会话 控制台: 注意:在Windows安全更新之前,当我使用ChromeDriver3.1和Chrome58时,我的脚本运行良好。更新后,我无法启动Chrome浏览器,因为它不是启动浏览器,而是在后台运行。
问题内容: 今天,自动安装了最新版本的chrome浏览器,该版本现在为54.0.2840.71 m(64位)。我无法使用最新版本的Chrome驱动程序2.24和任何版本的Selenium来驱动浏览器。帮我解决这个问题..? 问题答案: 嗨,我已经解决了这个问题。Chrome 54或更低版本与Chrome驱动程序2.24兼容,而54或更高版本的Chrome需要Chrome驱动程序2.27。
我将Selenium与Python Chrome webdriver一起使用。在我的代码中,我使用了: 将webdriver指向webdriver可执行文件。有没有办法将webdriver指向Chrome浏览器二进制文件? https://sites.google.com/a/chromium.org/chromedriver/capabilities他们有以下产品(我想这就是我要找的): 有人举
今天,最新的chrome浏览器版本自动安装,现在是54.0.2840.71 m(64位)。我无法使用最新的Chrome driver 2.24和任何版本的Selenium来驱动浏览器。帮我解决这个问题。。?
控制台的使用 控制台查看源码 控制台的 Sources标签可以查看源码。按住快捷键「cmd + P」,可以根据文件名查找源码文件。 其他 show user agent shadow DOM 把上图中的红框部分打钩。