现在尝试访问'店铺'在https://shop.polymer-project.org/中使用以下代码在Chrome浏览器(V51)的JS控制台上的男士外穿部分下的按钮:
document.querySelector('shop-app').shadowRoot.querySelector('shop-home').shadowRoot.querySelector('shop-button');
我尝试使用selenium访问自动化测试中的相同元素,
第1行:WebElement shopBtn = (WebElement)((JavascriptExecutor)driver).executeScript("return document.querySelector('shop-app').shadowRoot.querySelector('shop-home').shadowRoot.querySelector('shop-button')");
第2行:shopBtn.click();
此代码提供错误:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'querySelector' of null
(Session info: chrome=51.0.2704.106)
(Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Mac OS X 10.11.3 x86_64).
对此方面的任何帮助表示高度赞赏。
答案 0 :(得分:1)
您没有指定,但看起来您正在使用Java。这里有一些有用的代码。不需要JSE。
WebDriver driver = new FirefoxDriver();
String searchText = "Men's Outerwear";
driver.get("https://shop.polymer-project.org/");
WebDriverWait wait = new WebDriverWait(driver, 5);
List<WebElement> sections = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector("div.item")));
for (WebElement section : sections)
{
if (section.getText().toLowerCase().contains(searchText.toLowerCase()))
{
section.findElement(By.linkText("SHOP NOW")).click();
break;
}
}
答案 1 :(得分:0)
必须逐个循环遍历阴影根元素以找到相应的元素。
document.querySelector('nuxeo-app').shadowRoot.querySelector('nuxeo-document-create-button').shadowRoot.querySelector('paper-fab').shadowRoot.querySelector('iron-icon');
答案 2 :(得分:-1)
我正在试图执行此单击,我可以使用firefox并使用xpath定位器
.//shop-button/a[starts-with(@aria-label, 'Men') and contains(@aria-label, 'Outerwear Shop Now')]
我正在使用Selenium 3.
我不确定我使用的是正确的方法
干杯