我有一个angularjs网页,当我在页面上执行某些操作时会提示。如果没有提示,代码应该忽略并继续,但如果出现提示,则确保接受javascript提示。
当我使用firebug时,我得到了元素的以下属性。 / html / body / div [2]
div [number]在我转到此页面时会发生变化。我无法在XPath中使用相同的内容,因为每次执行测试用例时,div元素都会发生变化。此外,div的属性为 tabindex = -1 。
bool status = false;
WebDriverWait wait = new WebDriverWait(webDriver, TimeSpan.FromSeconds(10));
IWebElement alert;
if (wait.Until(ExpectedConditions.InvisibilityOfElementLocated((By.XPath("/html/body/div[2]")
{
Console.WriteLine("I am in if loop");
status = false;
}
else
{
Console.WriteLine("I am in else loop");
alert = Browser.Driver.FindElement(By.XPath("/html/body/div[2]"));
((IJavaScriptExecutor)webDriver).ExecuteScript("arguments[0].click()", alert);
status = true;
}
return status;
如何处理这样的对话框并确保在出现时接受相同的对话框。
感谢。
答案 0 :(得分:0)
您可以使用警报标题派生xpath。可能如下。 (我不知道确切的html,只是想象标题文本在某个span标签中)
alert = Browser.Driver.FindElement(By.XPath("/html/body//div/span[contains(text(),'Apply changes to controller configuration')]"));
(//)
可以避免在div标签上使用索引。