簡體   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