3

テスト対象のアプリケーションは、機能のためにIFrameを生成します。XPATH、CSS、またはLinkTextのいずれかのロケーター戦略を使用して、IFrame上で要素を完全に見つけることができます。ただし、を実行するClick()と、コードは別の場所をクリックします。たとえば、画面には4つの回答がある多肢選択式の質問があり、スクリプトは3番目のオプションをクリックすることになっていますが、最終的には1番目のオプションをクリックします。ボタンがまったくクリックできないボタンの場合、問題はさらに深刻になります。ただし、Click()イベントはエラーをスローしません。Action()インターフェイスを使ってみましたが、うまくいきませんでした。Action.Perform()screen要素がHTMLの外にあるというエラーをスローします。誰か助けてもらえますか?

Selenium WebDriver(.NET)バージョン2.31とFirefox19.0.2を.NETFramework4.0で使用しています。

driver.SwitchTo().Frame(2);
System.Threading.Thread.Sleep(20000);
IWebElement Answer1 = driver.FindElement(By.XPath(".//*[@id='question-reload']/div[3]/div[2]/ul/li[1]/a"));
Answer1.Click();
driver.FindElement(By.LinkText("Find the embassy")).Click();
IWebElement Next = driver.FindElement(By.XPath(".//*[@id='next']/b/i"));
int X = Next.Location.X;
int Y = Next.Location.Y;
Next.Click();

    for (int i = 0; i < 59; i++)
    {
        System.Threading.Thread.Sleep(3000);        
        IWebElement newNext = driver.FindElement(By.XPath(".//*[@id='next']/b/i"));
        newNext.Click();
    }
4

1 に答える 1

2

ええと...[次へ]ボタンをクリックするためにJavaScriptを挿入することで、問題を解決することができました。コードは次のとおりです。

System.Threading.Thread.Sleep(1000);               
IJavaScriptExecutor exec = (IJavaScriptExecutor)driver;
StringBuilder locator = new StringBuilder();
locator.Append("document.getElementById('next').click();");
exec.ExecuteScript(locator.ToString());

この作品とピッチインしてくれた皆さん、本当にありがとう!

于 2013-03-12T18:08:49.857 に答える