Selenium无法找到项目列表输入

时间:2016-06-08 04:10:11

标签: java selenium selenium-webdriver

你好,我学习硒,我遇到了第一个问题。我一直在寻找它并测试了很多解决方案,但没有一个能为我工作。

这是我想点击的外观按钮(我想点击导航栏中的事件按钮)

<div id="navbar-items" class="collapse navbar-collapse">
                <ul class="nav navbar-nav">
                    <li><a href="#about">About</a></li>
                    <li><a href="#events">Events</a></li>
                    <li><a href="#venues">Venues</a></li>
                    <li><a href="#bookings">Bookings</a></li>
                    <li><a href="#monitor">Monitor</a></li>
                    <li><a href="admin">Administration</a></li>
                </ul>
            </div>

这是我的java代码:

public class SeleniumTest {

@Test
public void startWebDriver() throws InterruptedException{

    WebDriver driver = new FirefoxDriver();
    driver.navigate().to("http://localhost:8080/ticket-monster/");

    Assert.assertTrue("title should start differently",              
            driver.getTitle().startsWith("Ticket Monster"));

    Thread.sleep(7000);

    driver.findElement(By.xpath("//div[@id='navbar-items'][2]")).click();

    //*[@id="navbar-items"]/ul/li[2]/a

// I also was trying this and nothing clicked events button
//driver.findElement(By.xpath("(//span[@class='nav navbar-nav'])2]")).click();
//driver.findElement(By.cssSelector("ul > li:nth-child(2)")).click();
}
}

以下是我正在练习的网站可能会有所帮助。 http://ticketmonster-jdf.rhcloud.com/

我将非常感谢你的每一次帮助。

3 个答案:

答案 0 :(得分:2)

请尝试以下代码并告知我们。

WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.get("example.com");
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='navbar-items']/ul/li[2]/a")));
driver.findElement(By.xpath(".//*[@id='navbar-items']/ul/li[2]/a")).click();

Xpath是最慢的,所以当我们没有任何选项时会使用xpath。幸运的是,xpath正在使用id,所以这里一切都很好。

答案 1 :(得分:1)

请尝试以下代码:

WebDriver driver = new FirefoxDriver();

driver.get("http://ticketmonster-jdf.rhcloud.com/");
String eventXpath = "html/body/div[2]/div[1]/div/div[2]/ul/li[2]/a";

WebElement eventElement = (new WebDriverWait(driver, 30))
                    .until(ExpectedConditions.presenceOfElementLocated(By.xpath(eventXpath)));        

eventElement.click();

即使以另一种方式,您也可以使用以下代码来实现链接文本定位器。

WebDriver driver = new FirefoxDriver();

driver.get("http://ticketmonster-jdf.rhcloud.com/");

String linkText = "Events";

WebElement eventElement = (new WebDriverWait(driver, 30))
        .until(ExpectedConditions.presenceOfElementLocated(By.linkText(linkText)));        

eventElement.click();

答案 2 :(得分:0)

driver.findElemnt(By.xpath("//div[@id='navbar-items']/ul/li/a[contains(text(),'YOUR LISTED TEXT')]")).click()

这可能对您有所帮助