尝试点击电子商务演示网站'在“DEMO SITES'选项卡' http://toolsqa.com/'网站使用下面提到的方式。但无法点击它。请帮我解决这个问题。
代码1:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.linkText("E-Commerce Demo Site"))));
driver.findElement(By.linkText("E-Commerce Demo Site")).click();
代码2:
driver.findElement(By.cssSelector("#main-nav > li.menu-item.menu-item-type-custom.menu-item-object-custom.menu-item-has-children.menu-item-17611.dt-mega-menu.mega-auto-width.mega-column-1.has-children > ul > li.menu-item.menu-item-type-custom.menu-item-object-custom.menu-item-21575.dt-mega-parent.wf-1.first.level-arrows-on")).click();
CODE3:
WebElement subNav = driver.findElement(By.className("sub-nav"));
List < WebElement > subNavValues = subNav.findElements(By.tagName("li"));
subNavValues.get(0).click();
答案 0 :(得分:2)
Actions ac;
ac = new Actions(dr);
ac.MoveToElement(dr.FindElement(By.LinkText("DEMOSITES"))).Perform();
然后使用以下任何xpath点击子菜单:
1。“// span [包含(text(),'电子商务演示网站')]”
2。 “//一个[@href = 'http://store.demoqa.com']”
dr.findelement(By.xpath(xpath)).click();
答案 1 :(得分:1)
您需要转移到&#34;演示网站&#34;跨度。您必须使用Actions类使用函数moveToElement()
移动到此元素。对于元素搜索带有文本&#34; DEMO SITES&#34;的跨度。
等待显示子菜单。使用webdriver等待元素ul与class =&#39; sub-nav&#39;。 new WebDriverWait(driver, 3).until(ExpectedConditions.visibilityOf(sub-menu webelement)).
然后点击电子商务演示网站&#39;链接。这与文本有关。
你可以找出确切的语法。
答案 2 :(得分:1)
在窗口最大化之后尝试以下内容
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement elem = driver.findElement(By.xpath("//nav[@id='navigation']/ul/li[9]/a/span"));
Actions action = new Actions(driver);
action.moveToElement(elem).build().perform();
这对我有用。
答案 3 :(得分:1)
尝试这样的事情对我来说很好:
@Test
public void qaToolsNavigation() {
Actions action = new Actions(driver);
By demoSitesMenuItem = By.xpath("//span[text()='DEMO SITES']");
By eCommerceSubMenuItem = By.xpath("(//span[text()='E-Commerce Demo Site']/..)[1]");
driver.get("http://toolsqa.com/");
waitForVisibility(demoSitesMenuItem, 10);
action.moveToElement(driver.findElement(demoSitesMenuItem)).build().perform();
waitForVisibility(eCommerceSubMenuItem, 10);
driver.findElement(eCommerceSubMenuItem).click();
}
private void waitForVisibility(By locator, int timeToWait) {
WebDriverWait wait = new WebDriverWait(driver, timeToWait);
wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
}
答案 4 :(得分:0)
你可以尝试这个: driver.findElement(By.xpath(&#34; // * // span [contains(text(),&#39;电子商务演示 站点&#39)]&#34;))点击();