Asp.net mvc 硒+;MVC4:如何查找包含在特定父元素中的元素
我在做MVC4应用程序,并为其创建Selenium测试。我的问题是,我想查找元素Asp.net mvc 硒+;MVC4:如何查找包含在特定父元素中的元素,asp.net-mvc,asp.net-mvc-4,selenium,Asp.net Mvc,Asp.net Mvc 4,Selenium,我在做MVC4应用程序,并为其创建Selenium测试。我的问题是,我想查找元素,但只包含在 我的解决方案是在下面添加的,但它不起作用: private static IWebElement FindZoneByDataOrder(IWebDriver webDriver, int dataOrderId) { var parentForDropElement = webDriver.FindElement(By.XPath("//li[@data-order='" + dataOrde
,但只包含在
我的解决方案是在下面添加的,但它不起作用:
private static IWebElement FindZoneByDataOrder(IWebDriver webDriver, int dataOrderId)
{
var parentForDropElement = webDriver.FindElement(By.XPath("//li[@data-order='" + dataOrderId + "']"));
var dropElement = parentForDropElement.FindElement(By.XPath("//ul[@class='connectors ui-sortable']"));
return dropElement;
}
我的HTML页面的一部分:
....
<div class="zones-system-creator" style="min-height: 430px;">
<ul id="zonesCreateSystem" class="">
<li data-zoneid="24829" class="empty zoneLi ui-droppable" data-order="1">
<div id="warningInfoBoxContainer"></div>
<ul class="products ui-sortable"></ul>
<ul class="connectors ui-sortable"></ul>
</li>
</ul>
</div>
....
。。。。
-
....
更新1:我将zoneID更改为dataOrderId,因为我们只关心dataOrderId。我在代码中看到一些问题。您讨论了数据顺序,但在方法中传递了zoneId。因此,我添加了另一个名为dataOrder的参数,并搜索同时具有区域和数据顺序属性的
LI
元素:
"//li[@data-zoneid='" + zoneId + "'][@data-order='"+dataOrder+"'"]
然后搜索具有指定类的ul
元素。还将元素合并为一行:
代码:
private static IWebElement FindZoneByDataOrder(IWebDriver webDriver, int zoneId, int dataOrder)
{
return driver.findElement(By.xpath("//li[@data-zoneid='" + zoneId + "'][@data-order='"+dataOrder+"']//ul[@class='connectors ui-sortable']"))");
}
return driver.findElement(By.xpath("//li[@data-order='"+dataOrderId+"']//ul[starts-with(@class, 'connectors')]"));
编辑以下问题的答案编辑:
private static IWebElement FindZoneByDataOrder(IWebDriver webDriver, int zoneId, int dataOrder)
{
return driver.findElement(By.xpath("//li[@data-zoneid='" + zoneId + "'][@data-order='"+dataOrder+"']//ul[@class='connectors ui-sortable']"))");
}
return driver.findElement(By.xpath("//li[@data-order='"+dataOrderId+"']//ul[starts-with(@class, 'connectors')]"));
如果您想在硒元素中找到一种元素,我找到了两种可行的解决方案:
result = webDriver.FindElement(By.XPath("//li[@data-order='" + dataOrderId+ "']"));
var result2 = result.FindElement(By.XPath(".//ul[@class='connectors']"));
result = webDriver.FindElement(By.CssSelector("li[data-order='" + dataOrderId+ "']"));
result = result.FindElement(By.CssSelector("ul[class='connectors']"));
我明天会测试它。感谢现在1)您忘记了.XPath的
By
2)为了让代码更清晰,我在代码中做了一些小修改。3) 您的代码不工作是的,被.xpath遗忘了。现在更新它。添加了编辑过的答案。@id
应该是@class
。很高兴你自己找到了答案。