Selenium c#-等待文本不可见但不显示';好像不行
我不熟悉Selenium和C#并创建了一个自动测试,通过该测试我可以创建一些东西并立即删除它(都在同一个测试中) 测试的最后一步是验证我删除的项目的名称不再可见-这就是我似乎被卡住的地方 我在模式对话框中,项目在后台可见,因此,一旦我在模式对话框中确认删除,下一步是验证项目名称不再可见,但代码确实看到了名称,因此引发异常,因为它是true,而不是我预期的false结果 请参见下面我正在使用的代码:Selenium c#-等待文本不可见但不显示';好像不行,c#,selenium,assert,C#,Selenium,Assert,我不熟悉Selenium和C#并创建了一个自动测试,通过该测试我可以创建一些东西并立即删除它(都在同一个测试中) 测试的最后一步是验证我删除的项目的名称不再可见-这就是我似乎被卡住的地方 我在模式对话框中,项目在后台可见,因此,一旦我在模式对话框中确认删除,下一步是验证项目名称不再可见,但代码确实看到了名称,因此引发异常,因为它是true,而不是我预期的false结果 请参见下面我正在使用的代码: public bool DeletedCategoryNoLongerVisible(string
public bool DeletedCategoryNoLongerVisible(string CategoryDisplayName) {
try {
WebDriverWait wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(20));
wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//*[@id='10_anchor']")));
Driver.FindElement(By.XPath($ "//*[@class='jstree-anchor'][text()='{CategoryDisplayName}']"));
return false;
} catch (Exception) {
return true;
}
}
您可以使用
InvisibilityFelementWithText
,等待目标元素丢失或其显示的文本为空:
new WebDriverWait(Driver, TimeSpan.FromSeconds(20))
.Until(ExpectedConditions.InvisibilityOfElementWithText(By.XPath(...), CategoryDisplayName));
如果该元素被另一个元素隐藏,则尝试单击它直到失败:
new WebDriverWait(Driver, TimeSpan.FromSeconds(20))
.Until((driver) => {
try {
driver.FindElement(By.XPath(...)).Click();
return false;
} catch (WebDriverException) {
return true;
}
});
您可以使用
InvisibilityFelementWithText
,等待目标元素丢失或其显示的文本为空:
new WebDriverWait(Driver, TimeSpan.FromSeconds(20))
.Until(ExpectedConditions.InvisibilityOfElementWithText(By.XPath(...), CategoryDisplayName));
如果该元素被另一个元素隐藏,则尝试单击它直到失败:
new WebDriverWait(Driver, TimeSpan.FromSeconds(20))
.Until((driver) => {
try {
driver.FindElement(By.XPath(...)).Click();
return false;
} catch (WebDriverException) {
return true;
}
});
是否正在尝试验证元素或文本?元素是真的被删除了还是仅仅是文本?@IamBatman,文本已经被删除了,所以我想验证一下。我指定的ElementToBeClickable是一个按钮,它位于模式后面,但似乎没有帮助。那么它是按钮上的文本还是输入字段中的文本?无论哪种方式,为什么不从元素中获取文本并执行条件转换呢?如果不存在,则执行此操作,否则执行该操作。是否尝试验证元素或文本?元素是真的被删除了还是仅仅是文本?@IamBatman,文本已经被删除了,所以我想验证一下。我指定的ElementToBeClickable是一个按钮,它位于模式后面,但似乎没有帮助。那么它是按钮上的文本还是输入字段中的文本?无论哪种方式,为什么不从元素中获取文本并执行条件转换呢?如果不存在,就这样做,否则就那样做。