Selenium点击子菜单

时间:2014-06-05 05:44:26

标签: selenium

我在这里过去两天真的被困了。我试图点击子菜单,当我尝试点击子菜单时,我得到一个错误,如下所示

Element not found for the sub menu.

我试过下面的代码

WebElement element =  driver.findElement(By.id("x-menu-el-P46915788081933044__folderbrowser_PJL"));
     JavascriptExecutor executor = (JavascriptExecutor)driver;
     executor.executeScript("arguments[0].click();", element);

HTML代码

<li id="x-menu-el-P46915788081933044__folderbrowser_PJL" class="x-menu-list-item">
<a id="P46915788081933044__folderbrowser_PJL" class="x-menu-item" href="javascript:var abc = doNothing()" unselectable="on" hidefocus="true">
<img id="ext-gen926" class="x-menu-item-icon " src="netmarkets/images/import.gif">
<span id="ext-gen927" class="x-menu-item-text">Upload Documents from Compressed      File</span>

2 个答案:

答案 0 :(得分:0)

您应该使用类名,而不是使用ID。

WebElement element = driver.findElement(By.ClassName("x-menu-list-item"));

或者您可以尝试使用css选择器

WebElement element = driver.findElement(By.cssSelector("li[class='x-menu-list-item']"));

由于上面的内容会返回多个项目,您可以使用它们返回所需的确切元素:

WebElement element = driver.findElement(By.linkText("Upload Documents from Compressed File")); 

答案 1 :(得分:0)

首先单击菜单,然后尝试以下语句 -

driver.findElement(By.xpath(&#34; //的Li [@class =&#39 X-菜单列表项&#39;] //跨度[含有(文本()&#39 ;从Compressed&#39;)上传文件))。click(); 或直接试试这个 -

driver.findElement(By.xpath(&#34; // span [contains(text(),&#39;从压缩上传文档&#39;)])。click();

我猜大多数错误是由于单词之间的跨度名称空格,如果上述不起作用,请附上截图或提供html代码的一些细节,这样我们就可以尝试更多选项,最好的。< / p>