如何定位元素以执行单击

时间:2014-11-02 13:30:49

标签: selenium xpath

我正在尝试在网站中导航:http://startupnationbook.com/startup-map 我想点击Startups的链接,但是我无法找到该元素。

我试过了:

elem = driver.findElement(By.xpath("//a[contains(text(),'Startups')]"));

elem = driver.findElement(By.xpath("//*[@id='listtoggle' and contains(text(),'Startups')]"));

在这两种情况下,我得到:“无法找到元素”错误

我的表达式有什么问题,如何找到要执行点击的元素。

2 个答案:

答案 0 :(得分:2)

地图位于iframe中,您可能不会告诉Selenium在那里查看。我也会寻找span标签,因为id listtoggle被多次使用(设计不佳,使它变得毫无价值),只需查看包含Startups。

// Also should probably use a wait here, in case the page takes too long to load
chromeDriver.switchTo().frame(chromeDriver.findElement(By.tagName("iframe")));
WebElement elem = chromeDriver.findElement(By.xpath("//span[contains(text(),'Startups')]")); 

答案 1 :(得分:1)

你可以这样做:

WebDriver driver = new FirefoxDriver();
driver.get("http://startupnationbook.com/");
driver.findElement(By.xpath(".//*[@id='main-nav']/li[5]/a")).click();

希望这会奏效。我已经测试了。