我正在使用Selenium Webdriver和Java。我一直收到InvalidSelector异常错误:我试图用javascript点击href标签中的链接。该链接位于您将鼠标悬停在子菜单上,然后显示链接。这是我的代码不起作用。我想点击名称:
String xpath = String.format(".//div[@class='submenu_c1'][11]");
WebElement subelement = getDriver().findElement(By.xpath>(xpath));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", subelement);
这是HTML:
<div id="submenu" style="position: fixed; display: block; top: 149px; left: 444.5px;">
<div id="shadow" class="divEffectSubList" style="height:520px;width:900px;padding:5px;">
<div class="submenu_c1" style="width:900px;">Search</div>
<ul id="sublist">
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<li>
<a href="javascript:hrefSubmit(startPageForm, 'searchDataEvents');">Data Event</a>
</li>
<li>
<li>
<li>
</ul>
<ul id="sublist">
答案 0 :(得分:0)
您的div
似乎已关闭且仅包含&#34;搜索&#34;文本。 a
元素也不是第11个元素。
还有一件事,dosn与问题有关,似乎你有2个ul
元素具有相同的id,给多个DOM元素提供相同的id并不是明智之举
希望我帮助
答案 1 :(得分:0)
斯拉瓦指出,加价并不是很好。
您正在寻找的xpath表达式是
".//ul[@id='sublist'][1]/li[13]/a"
我建议使用css选择器来改进html标记以实现可测试性。看一下这个guide from sauce labs folks
firefox或chrome上的控制台也是你的朋友,要评估xpath表达式类型
$x(".//ul[@id='sublist'][1]/li[13]/a")
按回车键,您将在控制台上获得结果。
对于css选择器,您可以使用
document.querySelectorAll("ul#sublist:nth-of-type(1) li:nth-of-type(13) a")
此外,不需要JavaScriptExecutor,您可以直接找到WebElement并调用webelement上的单击。
最后你没有任何东西格式化定位器,所以不需要使用String.format。