我正在使用以下selenium doc(http://selenium.googlecode.com/git/docs/api/java/index.html),但不确定如何有效地使用它。例如:如果我必须使用类键盘和方法pressKeys(),那么根据这个文档我应该导入哪个类来使用pressKeys()方法。这是我的代码,但它无法正常工作
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Keyboard;
public class myclass {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver", "C:\\selenium-java-2.35.0\\chromedriver_win32_2.2\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
//Open gmail
driver.get("http://www.gmail.com");
driver.findElement(By.id("Email")).pressKeys
}
}
错误消息我得到的最后一行是:“pressKeys无法解析或不是字段”
我在这里错过了什么?是进口类吗?如果是的话,我每次使用新的类或方法时如何从上面的doc中找到该类?
答案 0 :(得分:2)
pressKeys不是我见过的功能。
如果您想点击它,请执行:
.click();
如果要输入内容,请执行以下操作:
.sendKeys("thing to type");
如果要输入特殊字符,请执行以下操作:
.sendKeys(Keys.Return);
答案 1 :(得分:1)
有几件事需要解决:
1. 您收到此错误的原因是因为您没有在方法后面添加带有CharSequence参数的括号,因此编译器认为它是一个字段。
2. 即使您使用CharSequence参数添加括号,`pressKeys()`也不是可以取消WebElement的方法。你必须从键盘上调用它,除了:
3. 该方法的拼写有拼写错误。没有`pressKeys()`。你想要的是`pressKey()`或`sendKeys()`(我建议`sendKeys()`。
4.最后,您不需要使用键盘对象来使用sendKeys()
,因为您可以直接从WebElement调用它(与pressKey()
不同)。
driver.findElement(By.id("Email")).sendKeys("Type whatever you want here");
如果你想使用pressKey()
,你需要实例化一个键盘的实现(因为键盘是一个接口),然后从你的键盘调用pressKey()
:
Keyboard keyboard = //instantiate implementation here
driver.findElement(By.id("Email")).click();
keyboard.pressKey("Type whatever you want here");
虽然我真的推荐第一个解决方案。它简单得多。
答案 2 :(得分:0)
如果你已经写下了你正在使用哪个版本的Selenium,那将会很有帮助。但是,WebElement
只有文本文本操作和获取属性值的方法。所以你需要使用Actions
类,如
new Actions(driver).keyDown(driver.findElement(By.id("Email")), Keys.ENTER)
.build().perform();