【发布时间】:2016-08-26 21:50:14
【问题描述】:
我一直在尝试编写一个清晰的仪表板步骤,该步骤将清除仪表板页面中我们称为小部件的所有对象,如下所示:
public static void ClearDashboard(string widgetToKeep = null)
{
var widgets = Driver.FindElements(
By.XPath(
$"//div[@widget-name and descendant::span[@class='title' and text()[not(contains(., '{widgetToKeep ?? "dummyText"}'))]]]"
));
if (widgets != null)
{
foreach (IWebElement widget in widgets)
{
var closeButton = widget.FindElement(By.XPath(".//span[@class='delete']"));
closeButton.Click();
}
}
它完全有效。 它使用标题返回所有跨度元素,我可以滚动浏览这些元素,为每个元素获取一个跨度删除按钮,然后删除小部件:
closeButton.Click()
除了有点偏离屏幕的小部件对象。 如果小部件离屏幕有点远,它似乎找不到跨度按钮。
这是一个例外: 用户代码未处理 InvalidOperation
WebDriver.dll 中出现“System.InvalidOperationException”类型的异常,但未在用户代码中处理
附加信息:未知错误:元素在点 (951, 760) 处不可点击。其他元素会收到点击:
<div class="scroll" ng-class="{'getting-data': gettingNewData}" scroll-pag="">...</div>(会话信息:chrome=52.0.2743.116)
(驱动程序信息:chromedriver=2.22.397933 (1cab651507b88dec79b2b2a22d1943c01833cc1b),platform=Windows NT 6.1.7601 SP1 x86_64)
【问题讨论】:
标签: c# .net google-chrome selenium