我有一个呈现登录表单的页面。使用Firefox的firebug我已经确定了用户名id = txtUsername,密码文本框是txtPassword。 Firefox中的一切都很好。但是转移到IE浏览器浏览器,我收到错误并且无法找到元素。
在检查页面时,我发现表单是由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");
答案 0 :(得分:0)
我会做以下事情:
WebDriverWait waiting = new WebDriverWait(driver, 15, 100);
WebElement element = waiting.until(ExpectedConditions.visibilityOfElementLocated(By.id("frmLogin")));
这将创建一个WebDriverWait对象,该对象将等待最多15秒,检查预期条件是否每100毫秒有效。然后使用此对象等待frmLogin元素在页面上可见,然后返回一个WebElement,稍后可以在测试中使用(如果需要)。