webdriver 输入框 获取焦点而不点击

转载 2018年04月15日 08:56:56

做自动化过程中,有时候我们需要给某个元素设置焦点,在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);
}

}

二、

Actions builder = new Actions(Driver);
var searchOptionElement = GetElement(WindowPanel, By.CssSelector(".x-tool-toggle"));

                   IAction hoverOverRegistry = builder.ClickAndHold(searchOptionElement).Build();
                       hoverOverRegistry.Perform();
                      //builder.ContextClick(radioElement).Perform();
                      radioElement.SendKeys("PgDn");

webdriver 获取元素焦点方法

做自动化过 程中,有时候我们需要给某个元素设置焦点,在selenium1.0中提供了给元素设置焦点的方法。但是在2.0中并没有该办法。如果是输入框我们可以使 用click方法,来设置焦点,但是对于li...
  • hwm831002
  • hwm831002
  • 2013-11-26 13:55:06
  • 3738

webdriver setfocus blur

On Sunday, 30 September 2012 01:31:52 UTC+1, Hava Edelstein wrote:In the IDE, I use this line:fireEv...
  • aerchi
  • aerchi
  • 2012-10-18 11:25:26
  • 2204

Selenium 相关操作

转载,只为方便自己查看
  • jodan179
  • jodan179
  • 2017-05-23 08:10:31
  • 179

点击按钮的时候,输入框不获得焦点

public void setFocus(View view) { edit_layout.setFocusable(true); edit_layout.setFocusableIn...
  • aicpzl
  • aicpzl
  • 2016-05-30 15:09:10
  • 1258

在有EditText的界面 默认情况下不获取焦点(不弹出输入框)

在有EditText的界面 默认情况下不获取焦点(不弹出输入框)! 找网上找了一些解决方法像下面这些,都不能实现。 最后的解决方法是: 在AndroidMainf...
  • lxk_1993
  • lxk_1993
  • 2016-01-08 15:01:26
  • 3073

个人对webdriver的理解(五)

很多时候,对页面操作,不仅会弹出新的窗口,而且有时候会弹出一个小的提示窗,alert,应该是这个,其实处理这个alert还是比较简单的,只要switchTo().alert()就可以了。 例如:登陆...
  • qew110123
  • qew110123
  • 2016-04-15 10:32:12
  • 140

webdriver中元素查找常用方法(全集)

Selenium寻找元素定位 id findElement(by.id(“id”)) name findElement(by.name(“name”)) class_name findElement(...
  • cyjs1988
  • cyjs1988
  • 2017-07-10 17:33:11
  • 356

输入框获取焦点,页面放大解决方法

1.概述:     移动端网页输入框在点击后自动获取到焦点放大页面,有时候体验不是非常好. 2.原因:    当输入框获取焦点之后触发了webview的displaySoftKeyboard方法...
  • kun525331194
  • kun525331194
  • 2016-12-29 22:24:36
  • 1694

Android让文本输入框默认不获取焦点

项目中有个检索功能,页面上有个EditText输入框,打开页面后,焦点默认在EditText上,这样的话软键盘默认就会显示出来,占据大半个屏幕。 后来想办法将这个给去掉了,原先考虑着将焦点赋给页面上...
  • hwwzyh
  • hwwzyh
  • 2012-07-05 16:49:01
  • 9596

selenium 获取当前框架、窗体焦点

selectFrame(locator) 在当前窗体中选择一个框架(你可以多次调用这个命令用于选择嵌套框架)。要选择父框架,用”relative=parent”作为定位器;要选择顶级框架,用”rel...
  • hhb200766
  • hhb200766
  • 2012-08-13 20:20:57
  • 4848
收藏助手
不良信息举报
您举报文章:webdriver 输入框 获取焦点而不点击
举报原因:
原因补充:

(最多只允许输入30个字)