您好,有人可以提供以下建议吗?

时间:2017-04-03 16:22:15

标签: selenium selenium-webdriver

<nav id="mainnav-container">
<div id="mainnav">
<!--Menu-->
<!--================================-->
<div id="mainnav-menu-wrap">
<div class="nano has-scrollbar">
<div class="nano-content" tabindex="0" style="right: -17px;">
<ul id="mainnav-menu" class="list-group">
<li class="first" icon="fa fa-gbp" icon2="arrow" title="budget">
<li icon="fa fa-pie-chart" icon2="arrow">
<li icon="fa fa-tasks" icon2="arrow" title="deliver">
<li icon="fa fa-users" icon2="arrow" title="contacts">
<li class="last" icon="fa fa-file-text" icon2="arrow" title="reports">
<a href="/report">
<ul class="menu-title menu_level_1 collapse" aria-expanded="false">
</li>
</ul>
</div>
<div class="nano-pane" style="display: none;">

以上是我的HTML代码,我试图点击标题报告,我尝试了以下内容:

1)driver.findElement(By.xpath(“.//* [@ id ='mainnav-menu-wrap'] / div / div [1] / ul / li [5] / a”));

2)driver.findElement(By.xpath(“.//* [@ id ='mainnav-menu-wrap'] / div / div [1] / ul / li [5] li [contains(@title ,'报告')]“));

但似乎没有用。有人可以帮忙吗?

6 个答案:

答案 0 :(得分:1)

  

我会尝试,By.xpath(“// div [@ class =”nano-content“] // li [@ title =”reports“])

另外,如果您使用的是firfox,请尝试安装“firebug”,这是一个很酷的插件,用于在页面中查找唯一元素。如果您使用的是chrome,请尝试“xpath checker”

答案 1 :(得分:1)

尝试以下任何一项xpath

driver.findElement(By.xpath("//li[@title='reports']/a")).click();

xpath的说明:使用title标记的<li>属性并向前移动到<a>标记。

  

OR

driver.findElement(By.xpath("//li[@title='reports'][@class='last']/a")).click();

xpath的说明:使用title标记的class<li>属性,然后转到<a>标记。

  

OR

driver.findElement(By.xpath("//ul[@id='mainnav-menu']/li[@title='reports']/a")).click();
  

OR

driver.findElement(By.xpath("//div[@class='nano-content']/ul[@id='mainnav-menu']/li[@title='reports']/a")).click();
  

OR

driver.findElement(By.xpath("//div[@class='nano-content']//following::li[@title='reports']/a")).click();
  

OR

driver.findElement(By.xpath("//div[@class='nano-content']/..//li[@title='reports']/a")).click();

注意:而不是absolute xpath,请使用relative xpath

答案 2 :(得分:0)

根据:http://selenium-python.readthedocs.io/locating-elements.html

这是正确的语法:

driver.findElement(By.xpath("//[@id='mainnav-menu-wrap']/div/div[1]/ul/li[5]/a"));

.*

答案 3 :(得分:0)

试试这个:

driver.findElement(By.xpath("//[@id='mainnav-menu-wrap']/div/div[1]/ul/li[@class='last']"));

driver.findElement(By.xpath("//[*id='mainnav-menu-wrap']/div/div[1]/ul/li[@class='last']"));

如果这有助于您,请告诉我。

答案 4 :(得分:0)

您是否有使用这么长的xpath的特殊原因?看一下你应该能够使用//li[@title='reports']/a

答案 5 :(得分:0)

正如您所提到的,您可以使用以下代码获取数据,它也适用于点击。

driver.findElement(By.xpath("//div[@class='nano-content']//l‌​i[@title='reports']"‌​)).getText();

在点击它之前,您是否错过了在xpath上添加href标签的任何机会。请尝试使用下面的一个。

driver.findElement(By.xpath("//div[@class='nano-content']/l‌​i[@title='reports']/a"‌​)).click();