如何从用于使用 Selenium 填写表单的 chrome 自动填充框中选择值

Posted

技术标签:

【中文标题】如何从用于使用 Selenium 填写表单的 chrome 自动填充框中选择值【英文标题】:How to select value from chrome autofill box which comes for form filling using Selenium 【发布时间】:2018-09-08 10:16:45 【问题描述】:

我想从每当您使用 selenium 填写表单时出现的 Chrome 自动填充建议框中选择值。 我试过 sendkey(Keys.ARROWDOWN) 但它不起作用。 请建议我如何使用 selenium java 实现这一目标。

【问题讨论】:

欢迎来到 Stack Overflow!请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask 【参考方案1】:

刚刚尝试过,似乎工作正常:

package navi;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

public class Monika 
    private static WebDriver driver;

    WebDriverWait wait5s = new WebDriverWait(driver,5);

    @BeforeClass
    public static void setUpClass() 
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\pburgr\\Desktop\\chromedriver\\chromedriver.exe");
        ChromeOptions options = new ChromeOptions();
        options.addArguments("user-data-dir=C:\\Users\\pburgr\\AppData\\Local\\Google\\Chrome\\User Data");
        driver = new ChromeDriver(options);
        driver.manage().window().maximize();   
    @Before
    public void setUp() 
    @After
    public void tearDown() 
    @AfterClass
    public static void tearDownClass() driver.close();driver.quit();
    @Test
    public void autofill_first_value () throws InterruptedException, AWTException 

        driver.get("https://www.google.com/");
        WebElement fld_search = wait5s.until(ExpectedConditions.elementToBeClickable(By.id("lst-ib")));
        fld_search.click();
        fld_search.sendKeys("french");

        Robot rob = new Robot();                          
        rob.keyPress(KeyEvent.VK_DOWN); 
        rob.keyRelease(KeyEvent.VK_DOWN);
        Thread.sleep(1000);

        String foo1 = driver.findElement(By.xpath("//*[@id=\"sbse0\"]/div[2]/b")).getText();
        fld_search.sendKeys(" " + foo1);

        Thread.sleep(5000);

        // hit the search button...
    

【讨论】:

非常感谢,机器人 rob = new Robot(); rob.keyPress(KeyEvent.VK_DOWN); rob.keyRelease(KeyEvent.VK_DOWN);线程.sleep(1000);为我工作。

以上是关于如何从用于使用 Selenium 填写表单的 chrome 自动填充框中选择值的主要内容,如果未能解决你的问题,请参考以下文章

使用 selenium 和 webdriver (chrome) python OSX 在 Instagram 中填写登录表单

使用 selenium 或 requests 填写表格

如何强制Selenium WebDriver点击当前不可见的元素?

如何使用 Ember 从表单中读取自动填写的用户名/密码

在下拉选择中,如何从数据库中填写完整的表单字段

多对多模型的 Django 表单。如何从视图/模板填写表格?