Java 使用xpath在SeleniumWebDriver中定位元素

Java 使用xpath在SeleniumWebDriver中定位元素,java,selenium,selenium-webdriver,webdriver,Java,Selenium,Selenium Webdriver,Webdriver,我正在尝试使用seleniumwebdriver和Java 我想点击“创建锦标赛”链接。我使用xpath来标识该元素。但我得到了错误 org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='createtournaments_li']/a"} 有人能在这方面帮我吗 代码: 属性文件: VAR_AD

我正在尝试使用
seleniumwebdriver
Java

我想点击
“创建锦标赛”
链接。我使用
xpath
来标识该元素。但我得到了错误

org.openqa.selenium.NoSuchElementException: no such element: 
Unable to locate element: {"method":"xpath","selector":"//*[@id='createtournaments_li']/a"}
有人能在这方面帮我吗

代码:

属性文件:

VAR_ADMIN_USERNAME = //*[@id='username_txt']
VAR_ADMIN_PASSWORD = //*[@id='password_txt']
VAR_ADMIN_CONTINUE = //*[@id='main-section']/div/div/section[2]/div[2]/a/span
VAR_CREATETOURNAMENT = //*[@id='createtournaments_li']/a
VAR_TOURNAMENTTYPE = //*[@id='main-section']/div/div/div[2]/div[2]/ul/li/div/div/select
这应该起作用:

driver.findElement(By.xpath(".//*[@id='createtournaments_li']/a"));
确保代码不是
的一部分,并且在执行之前已加载页面


确保你在正确的页面上。在搜索元素之前,您的测试似乎没有登录。登录测试是一个单独的测试。创建锦标赛测试将从@BeforeTest中的url状态开始使用隐式等待可能会对您有所帮助,我也遇到了同样的问题,隐式等待的效果非常好。

试着看看这个xpath返回了多少节点?@Jsmith2800:我没有找到that@Will:如何计算节点数。。?我不知道。我是新手selenium@Amrutha在firepath窗口的左下角会显示“X个匹配节点”。这就是如何确保xpath只找到一个节点—您关心的节点。如果它不止一个,那么您的xpath需要一些改进case@Nick:driver.findElement(By.xpath(“./*[@id='createtournaments\u li']/a”);这不管用。并且代码不是确保在执行行之前加载页面的一部分。添加断点或Thread.sleep只是为了确保。@尼克:Thread.sleep已经添加,并且在执行该行之前加载了页面。xpath应该可以。一定是别的原因。您能分享源代码吗?请稍候。但同样的问题
driver.findElement(By.xpath(".//*[@id='createtournaments_li']/a"));