<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 ,'报告')]“));
但似乎没有用。有人可以帮忙吗?
答案 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']//li[@title='reports']")).getText();
在点击它之前,您是否错过了在xpath上添加href标签的任何机会。请尝试使用下面的一个。
driver.findElement(By.xpath("//div[@class='nano-content']/li[@title='reports']/a")).click();