2014-05-10 20 views
0
<div id="yui_3_16_0_1_1399697074576_1339" class="cbox " role="gridcell"> 
<input id="yui_3_16_0_1_1399697074576_1338" type="checkbox" tabindex="-1" 89513626107905="" aria-label="Message " title="Select this email"> 
<span id="yui_3_16_0_1_1399697074576_1340" class="icon"></span> 
</div>` 

上面的HTML是从萤火虫。如何点击使用硒的复选框

我想点击复选框,它的ID是id="yui_3_16_0_1_1399697074576_1338"从上面。我尝试使用by.idby.path,但他们都没有工作。 以下是我的尝试:

By.id("yui_3_16_0_1_1399697074576_1338") 
By.xpath("//input[@id='yui_3_16_0_1_1399697074576_1339' 

有人可以帮我在这?

+0

如果您试过By.id |通过findElement获取By.xpath,并且它们都不会超过所选的ID。 –

+0

声音像ID是动态生成的。 – Arran

+0

由于ID看起来像是动态生成的,因此您需要查找一些不同的ID,类或元素,以便您可以从中找到具有输入的div。这可以通过例如位置选择器'<某些特定选择器>>/div [1]/input [1]'来完成。 –

回答

0

您必须使用id获取元素并点击。这是一个类似按钮点击

driver.findElement(By.id("yui_3_16_0_1_1399697074576_1338")).click(); 
1

如果id为静态:

string checkboxXPath = "//input[contains(@id, 'yui_3_16_0_1_1399697074576_1338')]" 

动态标签值:

  string checkboxXPath = "//input[contains(@type,'checkbox') and      
      contains(@title,'Select this email')]" 

IWebElement elementToClick = driver.FindElement(By.XPath(checkboxXPath)); 
elementToClick.Click(); 
+0

ID值每次更改,所以我无法使用查找ID。我需要另一种方式来做到这一点 – user29542

+1

谢谢你loknath,这就是我所做的,使用'contains(@title,'选择此电子邮件');我不能投票,因为我是新来的 – user29542

1

NEVER要匹配这样的ID 。我推荐的东西是匹配一些更“独特”的东西。

尝试:

By.cssSelector("input[type='checkbox'][title='Select this email']") 

这个选择上面会符合您的<input/>完美。而且,它并没有与雅虎用户界面相结合,所以如果您或您的开发人员曾经更换过软件,那么它将解决这个问题。