0

ログインフォームを表示するページがあります。Firefox の firebug を使用して、ユーザー名 id = txtUsername を識別し、パスワード テキスト ボックスは txtPassword です。Firefoxではすべて問題ありません。しかし、IE Explorer ブラウザーに移行すると、エラーが発生し、要素を見つけることができません。

ページを調べたところ、JavaScript 関数によってフォームがレンダリングされていることがわかりました。以下はhtmlです:

form name="frmLogin" id="frmLogin" onsubmit="return $('#frmLogon').valid();" action="default.aspx" method="post" jQuery172043="1" novalidate="novalidate"

Selenium Webdriver を使用してページ要素を見つけるにはどうすればよいですか。

これは私が書いたコードです。

            /* setup for IE. Remove if not needed  */
            File file = new File("C:/SeleniumJavaLibrary/selenium-2.28.0/IEDriverServer.exe");
            System.setProperty("webdriver.ie.driver", file.getAbsolutePath());

            DesiredCapabilities caps = DesiredCapabilities.internetExplorer();
            caps.setCapability("ignoreZoomSetting", true);
            WebDriver driver = new InternetExplorerDriver(caps);
            driver.manage().timeouts().implicitlyWait(28,TimeUnit.SECONDS );
            /*setup for IE*/

            driver.get("http://website.com");
            WebElement element = (WebElement) ((JavascriptExecutor)driver).executeScript("return $('#frmLogin').valid();");

            element.findElement(By.name("txtUsername")).sendKeys("user");
            element.findElement(By.name("txtPassword")).sendKeys("password");
4

1 に答える 1

0

私は次のことをします:

WebDriverWait waiting = new WebDriverWait(driver, 15, 100);

WebElement element = waiting.until(ExpectedConditions.visibilityOfElementLocated(By.id("frmLogin")));

これにより、最大 15 秒間待機する WebDriverWait オブジェクトが作成され、期待される条件が 100 ミリ秒ごとに有効かどうかがチェックされます。このオブジェクトは、frmLogin 要素がページに表示されるまで待機するために使用され、後でテストで使用できる WebElement を返します (必要な場合)。

于 2013-02-08T13:31:26.690 に答える