做自动化过程中,有时候我们需要给某个元素设置焦点,在selenium1.0中提供了给元素设置焦点的方法。
但是在2.0中并没有该办法。如果是输入框我们可以使用click方法,来设置焦点,但是对于link连接或者button如果通过click方法势必会跳转到另外页面或者提交了页面请求。
通过尝试发现,如果在元素上进行右击,也可以设置焦点,但是会弹出一个菜单,这个时候我们可以通过按下键盘的esc键来取消右击弹出的菜单,这样焦点就可以设置成功了。
下面我通过键盘和鼠标事件组合来实现该功能。代码如下:
import java.awt.AWTException; import java.awt.Robot; import java.awt.event.KeyEvent; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.remote.DesiredCapabilities; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class TestActive { WebDriver driver = null; Actions action = null; Robot robot = null; @BeforeMethod public void setUp(){ try { robot = new Robot(); } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.setProperty(“webdriver.firefox.bin”, “D:/Firefox/firefox.exe”); FirefoxProfile file = new FirefoxProfile(); DesiredCapabilities ds = DesiredCapabilities.firefox(); ds.setCapability(FirefoxDriver.PROFILE, file); driver = new FirefoxDriver(ds); action = new Actions(driver); } @AfterMethod public void tearDown(){ } @Test public void start(){ driver.get(“http://www.baidu.com”); driver.manage().window().maximize(); //查找你需要设置焦点的元素 WebElement button = driver.findElement(By.xpath(“//*[@id='nv']/a[5]“)); //对该元素进行右击操作 action.contextClick(button).perform(); //按ESC键返回,设置焦点成功 robot.keyPress(KeyEvent.VK_ESCAPE); } } |