After much research on the internet, I found one solution that worked perfectly for me.
The steps that I followed:
- Chrome, JS.
- , ; 3. , .
- , CSS .
:
String[] shadowRootCalender = {"tickets-spa","tickets-config-page","#calendar"};
String date="2019-04-16";
FindShadowRootElement(driver, shadowRootCalender).findElement(By.cssSelector("wdat-date[slot='"+date+"']")).click();
public static WebElement FindShadowRootElement(WebDriver driver, String[] shadowRootSelector) {
WebElement root = null;
for(int i=0; i<shadowRootSelector.length; i++) {
if(i==0) {
isjQueryLoaded(driver);
root = (WebElement)((JavascriptExecutor)driver).executeScript("return document.querySelector(arguments[1]).shadowRoot", root, shadowRootSelector[i]);
}else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
root = (WebElement)((JavascriptExecutor)driver).executeScript("return arguments[0].querySelector(arguments[1]).shadowRoot", root, shadowRootSelector[i]);
}
}
return root;
}
public static void isjQueryLoaded(WebDriver driver) {
(new WebDriverWait(driver, 30)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
JavascriptExecutor js = (JavascriptExecutor) driver;
String readyState = js.executeScript("return document.readyState").toString();
return (Boolean) js.executeScript("return !!window.jQuery && window.jQuery.active == 0");
}
});
}