【问题标题】:How can i select class="logo" element in shadow-root using protractor+typescript如何使用量角器+打字稿在 shadow-root 中选择 class="logo" 元素
【发布时间】:2020-11-05 17:00:22
【问题描述】:

如何在 shadow-root 中选择 class='logo'

pic of html code

【问题讨论】:

    标签: typescript xpath automation protractor ui-automation


    【解决方案1】:

    你可以试试

    const logo = element(by.deepCss('.logo'));
    

    您也可以参考以下链接了解更多信息

    https://www.protractortest.org/#/api?view=ProtractorBy.prototype.deepCss

    https://www.seleniumeasy.com/selenium-tutorials/accessing-shadow-dom-elements-with-webdriver

    编码愉快~

    ================================================ === Selenium + Java 中的解决方案

    public class SeleniumJava {
        public static WebDriver driver;
    
        @Test
        public void shaddowTest() {
            System.setProperty("webdriver.chrome.driver", "/Users/krishnamajgaonkar/Desktop/Work/QAAuto/chromedriver-mac-64bit");
            driver = new ChromeDriver();
            driver.get("https://accounts.careerbuilder.com/share/login.aspx?next=http%3a%2f%2femployer.careerbuilder.com%2fjobposter%2fmycb.aspx");
            driver.findElement(By.name("cbsys_login_email")).sendKeys("testusercb@mailinator.com");
            driver.findElement(By.name("cbsys_login_password")).sendKeys("Stackoverflow12");
            driver.findElement(By.name("btnsigninemp")).click();
            try {
                Thread.sleep(50000);
            } catch (InterruptedException e) {
                System.out.println("HandleException");
            }
            JavascriptExecutor js = (JavascriptExecutor) driver;
            WebElement logo = (WebElement) js.executeScript("return document.querySelector('cbd-intl-header').querySelector('cut-wc-header').shadowRoot.querySelector('.logo')");
            System.out.println(logo.getAttribute("class"));
        }
        public void tearDown() {
            driver.quit();
        }
    }
    

    输出:

    logo

    【讨论】:

    • 不工作,出现错误:NoSuchElementError: No element found using locator: By(css selector, * /deep/ .logo)
    • 是否可以分享您遇到此问题的网址?
    • 是的,请使用 id: testusercb@mailinator.com 登录accounts.careerbuilder.com/share/… 并通过: Stackoverflow12 之后打开homepage.cba.careerbuilder.com/homepage/recent-activity 现在您可以在右上角看到“徽标”
    • @RohitGupta 我已经用 Selenium+Java 解决方案更新了答案。如果你能看到,我可以访问shadow-root 中的标识类,为了证明这一点,我打印了类名。我知道这个解决方案不适用于量角器,但您可以参考该解决方案并尝试在 typescript 中实现。谢谢~
    猜你喜欢
    • 2019-06-26
    • 2019-08-11
    • 2018-01-04
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2021-03-31
    相关资源
    最近更新 更多