第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有 Shadow DOM 的 Selenium Webdriver

帶有 Shadow DOM 的 Selenium Webdriver

C#
SMILET 2021-10-09 10:01:06
在 C# 中使用 Selenium Webdriver 時,嘗試選擇 Shadow DOM 下存在的元素時出現(xiàn)異常。我得到的例外是: NoSuchElementException您如何建議將 Selenium 與 Shadow DOM 一起使用?
查看完整描述

3 回答

?
慕妹3146593

TA貢獻1820條經(jīng)驗 獲得超9個贊

嘗試像這樣定位您的元素:


driver.FindElement(By.CssSelector('selector_otside_shadow_root /deep/ selector_inside_shadow_root')); 

在您的情況下,它將是:


driver.FindElement(By.CssSelector('app-home /deep/ #itemName1'));

您可以在chrome://downloads/鏈接中測試此方法css_selector:


downloads-manager /deep/ downloads-item /deep/ [id=file-link]

在開發(fā)工具中。如您所見,需要傳遞兩個shadow-root元素,因此請確保您只有一個shadow-root元素或使用多個元素/deep/,如上例所示。


或者你可以像這樣使用 JavasciptExecutor:


IJavaScriptExecutor js = (IJavaScriptExecutor)_driver;

var element = js.ExecuteScript("return document.querySelector('selector_outside_shadow_root').shadowRoot.querySelector('selector_inside_shadow_root');");

注意:據(jù)我所知,第一個建議僅適用于 Chrome,如果您想要跨瀏覽器解決方案 - 使用第二個。


查看完整回答
反對 回復(fù) 2021-10-09
?
神不在的星期二

TA貢獻1963條經(jīng)驗 獲得超6個贊

您可以創(chuàng)建一個方法,它接受 ShadowDom 根定位器列表,并構(gòu)建 js 腳本來執(zhí)行和獲取陰影元素:


public static IWebElement GetElementFromShadowDom(this IWebDriver driver, params string[] selectors)

    {

        IJavaScriptExecutor js = (IJavaScriptExecutor)driver;


        var scriptString = "return document.querySelector";

        var selectorIndex = 0;

        var stopIndex = selectors.Length - 1;


        foreach (var selector in selectors)

        {

            var root = "('" + selector + "')";

            root += (selectorIndex != stopIndex && selectors.Length != 1) ? ".shadowRoot.querySelector" : null;                

            selectorIndex++;

            scriptString += root;

        }


        var webElement = (IWebElement)js.ExecuteScript(scriptString);

        return webElement;

    }

}


查看完整回答
反對 回復(fù) 2021-10-09
?
繁花如伊

TA貢獻2012條經(jīng)驗 獲得超12個贊

我有同樣的問題。我發(fā)現(xiàn)了一些值


Inspect -> Properties -> value (it can be something else)

嘗試:


WebElement element = driver.findElement(By.cssSelector("div"));

System.out.println(element.getAttribute("value"));


查看完整回答
反對 回復(fù) 2021-10-09
  • 3 回答
  • 0 關(guān)注
  • 424 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號