[英]Receiving error in selenium (javascript) when opening shadowRoot
我正在为我正在开发的 web 应用程序设置第一个自动化测试,并且遇到了我不明白的 state。
它是一个浏览器应用程序,所以我启动了一个非常简单的 static 服务器:
import http from 'http';
let serve = serveStatic(path);
server = http.createServer(function(req, res) {
var done = finalhandler(req, res);
serve(req, res, done);
});
在我的测试过程中,我收到一条错误消息HTTP method not allowed
let options = new firefox.Options();
options.headless();
let capabilities = webdriver.Capabilities.firefox().set('acceptInsecureCerts', true);
let driver = new webdriver.Builder()
.forBrowser('firefox')
.setFirefoxOptions(options)
.withCapabilities(capabilities)
.build();
await driver.get('http://127.0.0.1:3030/index.html');
let tab = await driver.findElement(state.By.css('ps-tabpanel'));
tab = await tab.getShadowRoot(); // HTTP method not allowed
凭直觉,我将其更改为HTTPS
连接
import http from 'https';
在这种情况下,我收到一个非常不同的错误
await driver.get('https://127.0.0.1:3030/index.html');
// Reached error page: about:neterror?e=nssFailure2&u=https%3A//127.0.0.1%3A3030/index.html&c=UTF-8&d=%20
所以我的主要问题是,使用 Javascript Selenium 访问shadowRoot
我做错了什么?
以供参考
example.com
只是为了证明连接正常。为了解决这个错误,我切换到了 javascript 执行器。 这引发了不同的错误消息(循环对象)。
这让我想到了一个不同的stackoverflow问题
https://stackoverflow.com/a/67223939/1961413
根据该答案,这是 GeckoDriver/Firefox 中的一个已知缺陷。
基于此,我切换到 ChromeDriver/Chrome,并且能够找到 ShadowRoot。
https://www.npmjs.com/package/chromedriver
let driver = new webdriver.Builder()
.forBrowser('chrome')
.build();
await driver.get('http://127.0.0.1:3030/index.html');
let tab = await driver.findElement(state.By.css('ps-tabpanel'));
tab = await tab.getShadowRoot();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.