【发布时间】:2020-11-05 17:00:22
【问题描述】:
如何在 shadow-root 中选择 class='logo'
【问题讨论】:
标签: typescript xpath automation protractor ui-automation
如何在 shadow-root 中选择 class='logo'
【问题讨论】:
标签: typescript xpath automation protractor ui-automation
你可以试试
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
【讨论】:
shadow-root 中的标识类,为了证明这一点,我打印了类名。我知道这个解决方案不适用于量角器,但您可以参考该解决方案并尝试在 typescript 中实现。谢谢~