繁体   English   中英

打开 shadowRoot 时在 selenium (javascript) 中接收错误

[英]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我做错了什么?

以供参考

  • 摩卡 + selenium + firefox
  • gitpod 环境
  • 有一个较早的测试,只是验证我可以连接到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM