如何使用Selenium WebDriver在JavaScript表单上定位元素

0qx6xfy6  于 2023-01-20  发布在  Java
关注(0)|答案(1)|浏览(188)

我有一个呈现登录表单的页面。使用Firefox的firebug,我已经识别出用户名id = txtUsername,密码文本框是txtPassword。Firefox中一切正常。但移动到IE Explorer浏览器,我得到错误,无法找到元素。
在检查页面时,我发现表单是由JavaScript函数呈现的。

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");
lymnna71

lymnna711#

我将采取以下行动:

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

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

这将创建一个WebDriverWait对象,该对象最多等待15秒,每隔100毫秒检查一次预期条件是否有效。然后使用此对象等待frmLogin元素在页面上可见,然后返回一个WebElement,可在稍后的测试中使用(如果需要)。

相关问题