私は、ページ上で特定のアクションを実行するときにプロンプトを表示するangularjsウェブページを持っています。プロンプトが表示されない場合は、コードを無視して続行する必要がありますが、プロンプトが表示された場合は、javascriptプロンプトが受け入れられていることを確認してください。セレンを使用したウェブページのangularjsダイアログボックスの処理
私はファイヤーバグを使用すると、要素の次のプロパティを取得します。 /html/body/div [2]
このページに行くとdiv [number]が変わります。テストケースが実行されるたびにdivathを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;
どのようにこのようなダイアログボックスを処理し、同じように表示されるかを確認します。
ありがとうございました。
まず、モーダルウィンドウ、アラート、またはdivですか?これらに基づいて、解決策が変わる可能性があります。 xpathを変更するには、 'CSS'セレクタ(Seleniumが推奨)を使うか、以下の答えにある' contains'メソッドを使うことができます。関連するHTMLを問題にして追加すると、解決策を簡単に提供できるようになります。 – demouser123