[英]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.