我是Selenium-WebDriver
的新手。尝试找到一个元素并单击它。
但不断低于错误:
无法找到元素
Firepath
提供了以下xpath:
"xpath = html/body/header/div/ul/li[2]/a/span[1]"
相关的HTML代码是:
<ul class="nav navbar-nav navbar-right top-nav ">
<li class="identity has-icon">
<a href=".......">
</li>
<li class="settings has-icon">
<a href=".......">
<span class="icon icon-cogs" aria-hidden="true" role="presentation"/>
**<span class="nav-title">Settings</span>**
</a>
</li>
我试图通过以下方式找到元素:
1. driver.findElement(By.xpath("//div[@id='right-nav']//a[contains(text(),'Settings')]")).click();
2. driver.findElement(By.xpath("//div[@id='nav-title']//a[contains(text(),'Settings')]")).click();
3. driver.findElement(By.xpath("//div[contains(@class, 'nav-title')]")).click();
有人可以帮我找到解决方案吗?
答案 0 :(得分:1)
你几乎就在那里,在最后一个xpath中你使用了div,而不是尝试使用span。
"//span[contains(@class, 'nav-title')]"
答案 1 :(得分:0)
它不需要var r = cnn.Query("select 'apple' fruit from dual").FirstOrDefault();
var f = r.Fruit; // f is set to null, but I want it to be "apple"
var F = r.FRUIT; // F is set to "apple", but I don't want to reference using all caps.
,而且你的所有语句在xpath中都包含contains
两次,这是不正确的。
请使用以下声明
//
答案 2 :(得分:0)
您需要点击&#34; a(链接)&#34;直接标记,因为内部标记仅作为css(页面看起来使用bootstrap)。尝试以下代码,它应该工作
driver.findElement(By.xpath("//a[contains(@href,'PUT href texts here')]")).click()
如果这不起作用,请在评论中提及浏览器和selenium版本。
答案 3 :(得分:0)
您需要点击带有文字&#34;设置&#34;的span元素。所以下面的xpath将搜索一个span元素,其中包含Settings作为任何锚标记内的文本。
.//a/descendant::*[contains(text(),'Settings')]
答案 4 :(得分:0)
尝试以下任何一项。你会得到元素
//span[@class='icon icon-cogs']
//span[@class='icon icon-cogs'][@role='presentation']
//span[@class='icon icon-cogs'][@role='presentation']/span
希望它能帮到你
答案 5 :(得分:0)
这个简单的CSS选择器可能有效。没有更多的页面HTML,很难说它是否足够独特。它正在寻找带有SPAN
类的nav-title
标记。
driver.findElement(By.cssSelector("span.nav-title")).click();