我使用Selenium 2.44库和IE 9浏览器
通过js.动态加载菜单栏。我试图通过findElement
找到元素 - 使用Xpath
。它最终会抛出nosuchElement
异常。下面是Dom元素的片段
<html><body class="page">
<div id="dynamicMenu" style="display: block;">
<ul class="sf-menu sf-js-enabled sf-shadow">
<li sequence="7">
<a class="sf-with-ul" href="UserContentStart.aspx?category=17">Type
<span class="sf-sub-indicator"> »</span></a>
<ul style="display: none; visibility: hidden;">
<li sequence="0">
<a href="UserContentStart.aspx?category=19">Brochure</a>
</li>
<li sequence="1">
<a href="UserContentStart.aspx?category=22">Direct mail</a>
</li>
<li sequence="2">
<a href="UserContentStart.aspx?category=21">E-mail</a>
</li>
<li sequence="3">
<a href="UserContentStart.aspx?category=10019">Flyer</a>
</li>
<li sequence="4">
<a href="UserContentStart.aspx?category=18">Poster</a>
</li>
<li sequence="5">
<a href="UserContentStart.aspx?category=20">Presentation</a>
</li>
<li sequence="6">
<a href="UserContentStart.aspx?category=10017">Letter</a>
</li>
</ul>
</li>
</ul>
</div>
</body></html>
我是否需要在找到元素之前执行javascript。
我没有访问源代码。我检查的是通过F12开发工具的DOM
元素源。
谢谢!
答案 0 :(得分:0)
//li[@sequence='5']/a
应该适合你。并且,在此之前,您必须确保元素可见。
答案 1 :(得分:0)
代码下方将找到第5个元素并将等待,直到它可见20秒。 一旦可见,它将点击该元素。 在您的情况下,第5个元素是指向&#39; 演示文稿&#39;的链接。这是在&#39; a &#39;标签
WebDriverWait Test = new WebDriverWait(driver, 10);
WebElement Fifth_Link = Test.until(ExpectedConditions.elementToBeClickable(By.xpath("//a[contains(text(),'Presentation')]")));
Fifth_Link.click();
如果它不起作用,请告诉我。