问题描述:
页面分成了两部分,右边部分是在一个 iframe 中,使用 driver.switchTo().frame("main-iframe");进行了切换,切换之后按钮点击无报错,但是也没有任何效果。
按照百度的说法,先找到上层对象,再来点击操作这个对象,仍然是毫无反应。但是页面上的一个输入框却获得了光标,似乎是被点击了。
源代码如下:

package com.learn.java;

import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;

public class NewTest {
    WebDriver driver;
  @Test
  public void f() {
      Boolean flag;
      String total;
      driver.get("xxxxxxx");
      //driver.findElement(By.id("username")).sendKeys("admin");
      driver.findElement(By.xpath("//*[@id = 'username']")).sendKeys("admin");
      //driver.findElement(By.id("password")).sendKeys("admin");
      driver.findElement(By.xpath(".//*[contains(@id,'password')]")).sendKeys("admin");
      driver.findElement(By.id("btn-login")).click();
      try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

      flag = driver.findElement(By.xpath(".//span[.='系统管理']")).isDisplayed();
      System.out.println("flag = "+flag);
      driver.findElement(By.xpath(".//span[.='系统管理']")).click();
      //driver.findElement(By.xpath(".//a[.='用户管理']")).click();
      driver.findElement(By.linkText("用户管理")).click();
      driver.switchTo().frame("main-iframe");
      //下面这个sendkey可以成功的,后面的click全无反应,也不报错。
      //去掉这个sendkeys,后面的按钮点击也没有反应,但是可以看到这个输入框显示出被点击的样子,因为它里面有了光标闪烁。
      //driver.findElement(By.id("searchOrder")).sendKeys("admin");
      try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
      //driver.findElement(By.className("input-group input-search")).click();
      //driver.findElement(By.xpath(".//*/div[. = 'input-group input-search']")).click();

      //driver.findElement(By.xpath(".//*/div[@classname = 'input-group-btn']")).click();

      //driver.findElement(By.xpath("//*/button[@onclick='serchUsersByOrder()']")).click();

      total = driver.findElement(By.className("table-total")).getAttribute("innerHTML");
      System.out.println("查询结果:"+total);
      //尝试先找到父层对象,再找按钮,仍然点击无反应
      driver.findElement(By.className("content-search"));
      driver.findElement(By.linkText("添加")).click();

  }
  @BeforeClass
  public void beforeClass() {
      //System.setProperty("webdriver.firefox.marionette", "..\\tools\\geckodriver.exe");  
      //System.setProperty("webdriver.gecko.driver", ".\\tools\\geckodriver.exe"); 
      driver = new ChromeDriver();  
      //driver = new FirefoxDriver();
      driver.manage().window().maximize();
  }

  @AfterClass
  public void afterClass() {
      //driver.quit();
  }

}


↙↙↙阅读原文可查看相关链接,并与作者交流