javascript - 为什么 Selenium 不使用 JS?

标签 javascript selenium

我是一个菜鸟,学习 Javascript 已经有一段时间了,唯一的目的是用它来编写 Selenium 自动化(最终目的是学习 QA 自动化)。

问题是,当涉及到语言时,我完全感到困惑。我在 Selenium 文档和 scritp 示例中看到的只是“driver.FindElement”、“sendKeys”、“getTitle”等函数。

据我所知,(纯)Javascript 不使用这些函数,而是使用“document.getElementById”、“document.title”等。

当它说“sendKeys”时,你能帮我确定 Selenium 使用的是什么语言吗?为什么在我找到的有关 Selenium+Javascript 的所有文档中我只看到“getTitle”而不是“document.title”?我对纯 JS 的了解不适用于此工具?

我知道这可能是您见过的最愚蠢的问题之一,但在我了解这里发生的事情之前我无法继续学习。谢谢!

最佳答案

document.getElementByIddocument.title是 JavaScript HTML DOM API。您可以使用它在 JavaScript 中编写自动化脚本。

但是你必须在浏览器端运行这样的自动化脚本,或者在浏览器的 DevTool 控制台中,或者你通过 <script src='<your automation script><script>' 使 HTML 页面包含你的自动化脚本。进入页面源代码。

考虑如何将自动化脚本注入(inject)不属于您的网站的网页。即使您测试自己的网站,只要页面正在加载,您的自动化脚本就会被加载和执行。您很难管理运行过程,打包您的网站以在您的站点页面上包含自动化脚本等。并且仅使用 JavaScript 编写自动化脚本。

因此使用这种方式来自动化网页并不是一个明智的解决方案。

Selenium 是一个依赖 Webdriver 的 Web 自动化工具。 Webdriver 充当 Selenium API 和真实浏览器之间的代理。每个浏览器厂商都会开发和维护自己的webdriver(Webdriver是一个可执行的二进制文件),但是所有浏览器厂商都必须遵循Webdriver W3C规范来实现自己的wedriver,这样当你的脚本在不同浏览器的同一个页面调用同一个Selenium API时,你可以得到相同的结果。

driver.findElementdriver.sendKeys是用于编写自动化脚本的 selenium API。 selenium 提供了不同语言的 API,如 python、javascript、Java、ruby、c#、VBA、perl、php。您可以选择您喜欢的脚本语言。方法名称、用法在不同语言的 API 上是不同的。

Webdriver binary 只能接受http 请求,不能执行Selenium API 的方法/函数。您可以认为当 webdriver 二进制文件启动时,一个 http 服务器在其中运行以接受从您的自动化脚本发送的 http 请求。

实际上,每种语言的 selenium API 都实现了将所有 API 的方法转换为 http 请求,然后将请求发送到正在运行的 webdriver 二进制文件,然后 webdriver 二进制文件将 http 请求转换为浏览器上的操作。

与浏览器通信的 WebDriver 二进制文件的所有实现都使用通用的有线协议(protocol)。此线路协议(protocol)使用 JSON over HTTP 定义了一个 RESTful Web 服务,名为 The WebDriver JSON Wire Protocol , 更多详情请访问 here .

关于javascript - 为什么 Selenium 不使用 JS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52293133/

相关文章:

javascript - 检查字典对象的长度

javascript - div 容器内的 Slick-Slider 图像不会根据窗口大小调整大小

javascript - JS检查url是否包含单词或字符

JavaScript "this.variable"在一个实例中返回未定义,但在另一个实例中则不返回

javascript - React-testing-library 渲染函数有什么问题?它对某些对象返回错误

javascript - 使用 Protractor 工具使用特定元素定位器捕获图像

python - 如何使用单个文件执行 Robot Framework 中的所有 TestSuite

python - Selenium 点击的视觉反馈

java - Selenium HtmlUnit 卡住随机加载网页

Java PhantomJS NETWORK_ERR XMLHttpRequest 异常 101