Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sendKeys()方法未发送密钥_Java_Selenium - Fatal编程技术网

Java sendKeys()方法未发送密钥

Java sendKeys()方法未发送密钥,java,selenium,Java,Selenium,下面提到的是我的代码,它没有将键发送到文本框,但是当光标在文本框中不断闪烁时,它会找到正确的元素 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

下面提到的是我的代码,它没有将键发送到文本框,但是当光标在文本框中不断闪烁时,它会找到正确的元素

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");
公共类cl01{
公共静态void main(字符串[]args){
System.setProperty(“webdriver.gecko.driver”、“C:\\Program Files\\Java\\geckodriver-v0.14.0-win32\\geckodriver.exe”);
WebDriver=newfirefoxdriver();
驱动程序。获取(“http://www.rediff.com/");
字符串P1=driver.getWindowHandle();
系统输出打印LN(P1);
设置windows=driver.getWindowHandles();
迭代器W=windows.Iterator();
while(W.hasNext())
{
字符串C1=W.next();
系统输出打印LN(C1);
如果(!P1.等信号情况(C1))
{
驱动程序。切换到()。窗口(C1)。关闭();
}
}
驱动程序切换到()窗口(P1);
System.out.println(“打开的网页”);
//浏览器的位置已设置
driver.manage().window().setPosition(新点(30,40));
int height=driver.manage().window().getSize().getHeight();
System.out.println(“浏览器的高度为”+高度);
int width=driver.manage().window().getSize().getWidth();
System.out.println(“浏览器的宽度为”+宽度);
driver.manage().window().maximize();
driver.findElement(By.linkText(“创建一个Rediffmail帐户”)。单击();
System.out.println(“注册链接打开”);
driver.findElement(By.xpath(“./*[@id='wrapper']]/table[2]/tbody/tr[3]/td[3]/input”).sendKeys(“ABC”);

我觉得代码很好。可能加载速度慢,需要为第一个元素添加等待

在这种情况下,我会避免使用XPath,特别是当嵌套层很深并且依赖索引时。这会造成非常脆弱的定位器。我会使用如下CSS选择器

By.cssSelector("input[name^='name']")
我对此进行了测试,它对我起了作用。它基本上是在寻找一个
INPUT
标记,该标记的名称以“name”开头。该名称以自动生成的字符串结尾,但这部分在页面上是唯一的

这里有一些学习CSS选择器的参考资料。CSS选择器真的很强大,学习它们是值得的


您将密钥发送到哪里?在您的代码中找不到。啊,刚在结尾看到它。我认为您只是使用了错误的元素,您只认为它是正确的元素。sendKeys多年来一直运行非常稳定。我猜您对应该发生的事情的解释是错误的。代码完全按照我理解的那样运行。您正在尝试访问rediff、 你能给我提供HTML DOM吗?这样我就可以帮助你了。请更新问题中的DOM。我使用了带有显式等待的xpath方法,但不知道为什么这个xpath不起作用,即使xpath是正确的。我使用了以下代码:
WebDriverWait wait wait=new WebDriverWait(driver,15);wait.untill(ExpectedConditions.elementtobelickable(driver.findelelement(By.xpath(//table/.//following::tr/td/input[@name='name9e6f78ab']));driver.findelelement(By.xpath(//table/.//following::tr/td/input[@name='name9e6f78ab'])));sendKeys(“ABC”);
当我执行代码时,它对我来说工作正常。:)你能建议我从哪里学习
cssSelector
?`如果你觉得这个(或任何)答案有帮助,请投上一票。如果这回答了你的问题,请将其标记为已接受的答案。谢谢!