繁体   English   中英

Selenium Webdriver无法在菜单中找到href元素

[英]Selenium webdriver unable locate href element in menu

我正在使用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">

看来您的div关闭,仅包含“搜索”文本。 同样, a元素不是第11个元素。

还有一件事,与问题无关,似乎您有2个具有相同id的ul元素,将相同的id赋予多个DOM元素并不是明智的选择

希望我能帮上忙

正如Slava指出的那样,标记并不是很好。

您要查找的xpath表达式是".//ul[@id='sublist'][1]/li[13]/a"

我建议改用CSS选择器,并改进html标记的可测试性。 查看酱油实验室人员的指南

此外,firefox或chrome上的控制台也是您的朋友,以评估xpath表达式类型

$x(".//ul[@id='sublist'][1]/li[13]/a")

按Enter,您将在控制台上获得结果。

对于CSS选择器,您可以使用
document.querySelectorAll("ul#sublist:nth-of-type(1) li:nth-of-type(13) a")

同样,也不需要JavaScriptExecutor,您可以直接找到WebElement并调用对webelement的单击。

最后,您将不使用任何内容来格式化定位器,因此无需使用String.format。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM