你好,我学习硒,我遇到了第一个问题。我一直在寻找它并测试了很多解决方案,但没有一个能为我工作。
这是我想点击的外观按钮(我想点击导航栏中的事件按钮)
<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/
我将非常感谢你的每一次帮助。
答案 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()
这可能对您有所帮助