开始直接定位根本定位不了,后来发现里面包了一个iframe,解决办法如下:
写法一:
System.out.println("126 mail login"); WebDriver driver = new FirefoxDriver(); driver.get("http://www.126.com"); driver.findElement(By.id("lbNormal")).click(); //driver.switchTo().frame(driver.findElement(By.id("x-URS-iframe")));//注意iframe driver.switchTo().frame("x-URS-iframe");//这样写也可以,上一句那样也可以,效果相同 driver.findElement(By.name("email")).clear(); driver.findElement(By.name("email")).sendKeys("改下你的账号"); driver.findElement(By.name("password")).clear(); driver.findElement(By.name("password")).sendKeys("密码");
写法二:
WebElement account = driver.findElement(By.id("lbNormal")); account.click(); WebElement iframeforlogin = driver.findElement(By.id("x-URS-iframe")); driver.switchTo().frame(iframeforlogin); WebElement username = driver.findElement(By.name("email")); WebElement password = driver.findElement(By.name("password")); WebElement submitbutton = driver.findElement(By.id("dologin")); username.clear(); username.sendKeys("改下你的账号"); password.clear(); password.sendKeys("密码"); submitbutton.click();
注意:
1.中间注释掉的是另一种详细些的写法,两种都可以执行成功
2.126输入框不能使用id、xpath定位,因为它的id是一直在变化的(我开始就没注意到这点)
3.注意不要把上图画出的第1个红框中的定位忘记了,虽然一进网页就显示的账号密码登录,但是没有定位那里也会找不到