2012-07-10 75 views
0

我试图点击id =“0”的div标签。虽然它可以找到该ID,但无法点击它。点击其他ID工作。 这是在Firefox 12工作,但在13 失败我使用Selenium2用C#无法点击值为零的元素

driver.FindElement(By.XPath( “// DIV [@类= '菜单项' 和@ ID = '0']” ))点击();

<div style="position: absolute; top: 72px; left: 9px; " id="file" class="Menu"> 
<div class="MenuItem" id="0">&nbsp;<img src="images/UI/Icons/folder.png">Folder</div> 
<div class="MenuItem" id="1">&nbsp;<img valign="middle"  src="images/UI/Icons/tree/folderBlogClosed.png">Blog</div> 
<div class="MenuItem" id="2">&nbsp;<img valign="middle" src="images/UI/Icons/folderBoard.png">Discussion Board</div> 
</div> 
+0

你知道他们为什么有这样的ID吗?在我看来,你的页面还没有准备好进行自动UI测试。我倾向于将这些ID改为更合理可靠的东西。另外,你有没有尝试过与其他驱动程序?只是看看它是否与FF驱动程序有关。 – Arran 2012-07-10 21:51:51

+0

当你说无法点击该元素?你是否有任何异常或错误?如果有的话,请你能发布异常堆栈跟踪吗? – 2012-07-11 03:51:55

+0

共有4个菜单。我试图点击第一个菜单中的第一个项目,但它会点击第二个菜单中的第一个项目。我对这种行为感到震惊。 我试图改变id值到不同的东西,也尝试点击具有id =“文件”的div标签中的第一个子元素(新菜单) 在这两种情况下,它只是点击第二个菜单中的第一项 – RashmiPires 2012-07-12 14:28:32

回答

0

是否有原因使用XPath,而不仅仅是通过ID选择?

driver.FindElement(By.Id("0")); 

HTML id在页面上应该是唯一的。

+0

我甚至试过通过ID选择,但不起作用 – RashmiPires 2012-07-10 17:40:20

+0

是否*任何* FindElement查询(对于任何元素)工作?它可能是一个webdriver + FF13兼容性问题。我不能自己测试它,因为我不再经常使用Selenium(或C#)。 – 2012-07-10 18:19:27

1

具有以数字开头的ID属性的元素是invalid HTML。尽管大多数浏览器都会呈现这种情况,但试图使用JavaScript通过ID定位元素(如Selenium WebDriver所做的)完全可能会失败。

+0

@ JimEvans-你确定WebDriver使用javascript来定位元素吗?我认为这是由Selenium 1完成的,而webdriver使用浏览器的本地支持。 – vidit 2012-07-11 16:29:35

+0

我绝对确定。驱动程序使用findElement Automation Atom来定位除CSS选择器和XPath之外的每种位置类型的元素,并且它们也都使用JavaScript。 – JimEvans 2012-07-11 18:08:37

+0

@ JimEvans-对于XPath定位器,webdriver使用浏览器的本机支持。 – vidit 2012-07-19 05:00:53

0

我使用鼠标操作解决了这个问题 。谢谢大家的意见。

Actions builder = new Actions(driver); 
     IWebElement tagElement = driver.FindElement(By.XPath("//div[@id='0' and @class='MenuItem']")); 
     //mouse hover on first item 
     builder.MoveToElement(tagElement).Perform(); 
     //click on first item 
     driver.FindElement(By.XPath("//div[@id='0' and @class='MenuItem']")).Click();