簡體   English   中英

sendkeys()在Selenium WebDriver中不起作用

[英]sendkeys() not working in selenium webdriver

直到昨天,下面提到的代碼都可以正常工作,但是現在我遇到了一些問題。 該代碼將打開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");

文本框可能需要重點關注。

在這里,我們需要注意以下幾點:

  1. Email or Phone字段位於<input>標記內,因此在選擇定位器時需要將其考慮在內。
  2. Password字段也在<input>標記內,因此我們在選擇定位器時需要考慮到它。
  3. 如果您仔細觀察“ Log In按鈕的id是動態的,並且也在<input>標記內,那么我們也需要考慮這一因素。
  4. 這是使用cssSelector訪問URL https://www.facebook.com/的最小示例代碼塊,提供Email or PhonePassword ,最后單擊“ Log In按鈕:

     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(); } } 

檢查並查看是否根據瀏覽器版本使用了驅動程序的最新版本。 這基本上可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM