下面提到的是我的代码,它没有将密钥发送到文本框,但它找到了正确的元素,因为光标在文本框中一直闪烁。
public class cl01 {
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver","C:\\Program Files\\Java\\geckodriver-v0.14.0-win32\\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("http://www.rediff.com/");
String P1 = driver.getWindowHandle();
System.out.println(P1);
Set<String> windows = driver.getWindowHandles();
Iterator<String> W = windows.iterator();
while(W.hasNext())
{
String C1 = W.next();
System.out.println(C1);
if(!P1.equalsIgnoreCase(C1))
{
driver.switchTo().window(C1).close();
}
}
driver.switchTo().window(P1);
System.out.println("web page opened");
//Browser's position is set
driver.manage().window().setPosition(new Point(30, 40));
int height = driver.manage().window().getSize().getHeight();
System.out.println( "height of the browser is " +height);
int width = driver.manage().window().getSize().getWidth();
System.out.println("width of the browser is " +width);
driver.manage().window().maximize();
driver.findElement(By.linkText("Create a Rediffmail account")).click();
System.out.println("sign up link opened");
driver.findElement(By.xpath(".//*[@id='wrapper']/table[2]/tbody/tr[3]/td[3]/input")).sendKeys("ABC");
答案 0 :(得分:2)
代码看起来很好。也许它的加载速度很慢,你需要为第一个元素添加一个等待。
在这种情况下,我会避免使用XPath,尤其是当嵌套层太深而且依赖于索引时。这是一个非常脆弱的定位器。我会使用如下所示的CSS选择器。
By.cssSelector("input[name^='name']")
我对此进行了测试,它对我有用。它基本上是在寻找名称以&#34; name&#34;开头的INPUT
标记。该名称以自动生成的字符串结尾,但此部分在页面上是唯一的。
以下是学习CSS选择器的一些参考。 CSS选择器非常强大,花了很多时间来学习它们。