今天在做163邮箱的自动化登录时,使用各种方法都无法定位元素,后来百度说是因为登录页面使用了框架,一检查,如下图:
使用了内联框架iframe,原来定位用户名输入框,仅使用:WebElement user = driver.findElement(By.name(“email”));这一句代码,现在因为页面使用了框架,所以,要想定位该元素,要先定位到这个框架,即:
driver.switchTo().frame(“x-URS-iframe”);
以下是163邮箱登录的所有代码,代码最后两行是想要输出登录后的用户名,不知何故又是无法定位,希望知道的朋友指点!
package hello;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class GetInfo {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.setProperty("webdriver.firefox.marionette","C:\\Program Files (x86)\\Mozilla Firefox\\geckodriver.exe");
System.out.println("start selenium");
WebDriver driver = new FirefoxDriver();
driver.get("http://mail.163.com/");
driver.switchTo().frame("x-URS-iframe");
WebElement user = driver.findElement(By.name("email"));
user.clear();
user.sendKeys("XXXXXXXX");
WebElement password = driver.findElement(By.name("password"));
password.clear();
password.sendKeys("XXXXXXXX");
WebElement login = driver.findElement(By.id("dologin"));
login.click();
//String username = driver.findElement(By.xpath(".//*[@id='spnUid']")).getText();
//System.out.println(username);
}
}