2012-02-21 64 views
0

我试图在使用ASP.NET创建的网页上查找元素。问题是之前的4.0版本的ASP.NET为控制一些长期名称,以便找到一个简单的“用户名”输入字段我需要使用它的全名:使用ASP.NET控件的Selenium WebDriver

var elementName = "LoginControl1_uxLoginControl_UserName"; 
var username = Browser.TryFind(By.Name(elementName)); 

,它似乎是工作,但我正在寻找更简单的东西。使用部分元素名称或部分ID可以做同样的事情吗?例如

var username = Browser.TryFind(By.CssSelector("UserName")); 

这应该返回其名称/ ids(或甚至第一个元素)中具有“UserName”的所有元素。

+0

如果您需要参考,请访问[选择器规格](http://www.w3.org/TR/css3-selectors)。 – BoltClock 2012-02-21 17:26:19

回答

2

为此,您可以使用XPath,

var username = Browser.TryFind(By.Xpath("//*[contains(@name , 'UserName')] ")); 

的另一种选择是使用CSS选择器如果可能的话

+0

使用XPath绝对是一个不错的选择。 @Oliver,你的意思是“你现在只限于标签类型”? – 2012-02-21 17:30:34

+0

如果您查看XPath,现在选择包含用户名的所有输入标签。在此之前,他们会使用名称为UserName的任何HTML元素。对不起,不清楚 – Oliver 2012-02-21 17:36:58

+2

@Oliver:你可以很容易用'*'替换'input',不是吗? – BoltClock 2012-02-21 17:37:35