Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.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()在selenium webdriver中不工作_Java_Selenium - Fatal编程技术网

Java sendkeys()在selenium webdriver中不工作

Java sendkeys()在selenium webdriver中不工作,java,selenium,Java,Selenium,直到昨天,下面提到的代码工作正常,但现在我面临一些问题。 代码打开firefox浏览器,然后加载facebook.com,但代码未发送 web浏览器的电子邮件和密码,即sendkeys()不起作用。 我验证了电子邮件文本框的id和密码是否正确,但代码不起作用 import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.WebDriver; import java.util.concurrent.Tim

直到昨天,下面提到的代码工作正常,但现在我面临一些问题。 代码打开firefox浏览器,然后加载facebook.com,但代码未发送 web浏览器的电子邮件和密码,即sendkeys()不起作用。 我验证了电子邮件文本框的id和密码是否正确,但代码不起作用

import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.WebDriver;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
public class Webdriver2 {

    WebDriver driver ;
    JavascriptExecutor jse;
    public void invokeBrowser()
    {
        try
        {
        System.setProperty("webdriver.gecko.driver","C:\\geckodriver-v0.19.0-win64\\geckodriver.exe");
        driver = new FirefoxDriver();
        driver.manage().deleteAllCookies();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS );


        driver.get("https://www.facebook.com/");
        search();
        }
        catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

    }
    public void search()
    {
        try
        {
        driver.findElement(By.id("email")).sendKeys("example@gmail.com"); 
        Thread.sleep(4000);
        driver.findElement(By.id("pass")).sendKeys("password"); 
        Thread.sleep(4000);
        driver.findElement(By.id("u_0_2")).click();
        Thread.sleep(4000);
        /*driver.findElement(By.name("q")).sendKeys("spit mumbai");
        Thread.sleep(4000);
        driver.findElement(By.xpath(" //button[@aria-label='Search' and @data-testid='facebar_search_button'] ")).click();*/

        }
        catch(InterruptedException e)
        {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Webdriver2 w = new Webdriver2();
        w.invokeBrowser();
    }
}

在执行sendKeys之前,请尝试单击两个文本框:

driver.findElement(By.id("email")).click();
driver.findElement(By.id("email")).sendKeys("example@gmail.com");

文本框可能需要聚焦。

我们需要注意以下几点:

  • 电子邮件或电话
    字段位于
    标记内,因此我们需要在选择定位器时将其考虑在内
  • Password
    字段也在
    标记中,因此我们需要在选择定位器时将其考虑在内
  • 如果您仔细观察<代码>登录< <代码>按钮,它是动态的,而且在<代码> <代码>标签中,所以我们也需要考虑这个因素。
  • 下面是使用cssSelector访问url
    https://www.facebook.com/
    ,提供
    电子邮件或电话
    密码
    ,最后单击
    登录
    按钮:

    package demo;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    
    public class Facebook_Login_CSS_FF {
    
        public static void main(String[] args) {
    
    
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
            WebDriver driver =  new FirefoxDriver();
            driver.get("https://www.facebook.com/");
            driver.findElement(By.cssSelector("input#email")).sendKeys("Ryusei");
            driver.findElement(By.cssSelector("input[name='pass']")).sendKeys("Nakamura");
            driver.findElement(By.cssSelector("input[value='Log In']")).click();
        }
    
    }
    

  • 你有什么错误吗?代码没有改变,geckodriver没有改变,我认为有两个可能的原因:1)你的firefox升级了,2)你需要在sendKeys之前添加wait,你以前没有遇到过这个问题,邮件文本框在60秒内显示出来(你设置页面加载超时30秒,隐式等待30秒),但现在FaceBook主页变慢或您的网络变慢。请检查并查看驱动程序的最新版本是否与浏览器版本相同。这主要解决了这个问题。在发布答案时,请查看格式指南。要将文本格式化为代码,只需将行缩进4个空格即可。>字符通常用于引号,有时用于错误消息,而不是代码。我为你修改了格式,你也可以看一下。