Selenium-无法使用xpath为div类定位元素

时间:2016-08-25 03:36:57

标签: java angularjs selenium-webdriver

我在java.I neead中使用selenium webdriver来点击菜单栏。我尝试了各种xpath并且没有工作。 <div class="menu-toggler sidebar-toggler"> </div>是我要点击的元素。我使用了xpath /html/body/div/div[4]/div[2]/div/div[2]/div[2]/div[2]/div/div/div[1]/div[2]/a。 我很好用任何可以帮助我点击菜单栏的选项。在这里使用automation.i使用ngwebdriver框架,所以如果可以使用ngwebdriver完成也很好。如果有人可以帮助我这将是非常好的。 / p>

<div class="ng-scope" ng-if="loggedIn">
    <div class="page-spinner-bar hide" ng-spinner-bar="">
    <div class="ng-scope" data-ng-controller="HeaderController">
        <div class="page-header md-shadow-z-1-i navbar navbar-fixed-top ng-scope" data-ng-include="'app/main/tpl/header.html'">
            <div class="page-header navbar navbar-fixed-top ng-scope">
                <div class="page-header-inner">
                    <div class="page-logo">
                        <div class="menu-toggler sidebar-toggler"> </div>
                    </div>
                    <a class="menu-toggler responsive-toggler" data-target=".navbar-collapse" data-toggle="collapse" href="javascript:;"> </a>
                    <img class="small-logo" src="assets/img/logo_kart_small.gif">
                    <div class="top-menu">
                </div>
            </div>
        </div>
    </div>

2 个答案:

答案 0 :(得分:0)

您应该尝试使用By.cssSelector(),如下所示:

WebDriverWait wait = new WebDriverWait(driver, 10);

WebElement sideMenuButton = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.menu-toggler.sidebar-toggler")));

Actions actions = new Actions(driver); 
actions.moveToElement(sideMenuButton).click().perform(); 

已修改: - 如果上述情况不正常,请尝试使用JavascriptExecutor执行点击操作: -

WebElement sideMenuButton = wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.menu-toggler.sidebar-toggler")));
((JavascriptExecutor)driver).executeScript("arguments[0].click()",  sideMenuButton);

答案 1 :(得分:0)

尝试使用具有内置xpath生成器的firefox&#39; firebug add。它是一个非常准确的发电机。即使我使用的是与firefox不同的浏览器,也解决了我的许多问题。