如何使用 Selenium 从下拉菜单中 select 项目?

How to select items from drop down menu using Selenium?

我一直在尝试使用 Selenium 自动执行搜索。我只是想搜索字词(比如 Pink Floyd),但文件类型应该是 pdf。这是我到目前为止所做的:

    //Query term
    WebElement element = driver.findElement(By.name("as_q"));
    String finalQuery = "pink floyd";
    element.sendKeys(finalQuery);

    //File type selection
    WebElement elem = driver.findElement(By.id("as_filetype_button"));
    elem.sendKeys("Adobe Acrobat pdf (.pdf)");
    driver.findElement(By.xpath("/html/body/div[1]/div[4]/form/div[5]/div[9]/div[2]/input[@type='submit']")).click();

这会将术语放在适当的位置,文件类型的下拉列表已扩展,但 pdf 选项未 selected。有帮助吗?

我正在使用 Selenium 2.53.0。

编辑

根据该问题的公认答案,以下代码段完美运行。但是,突然间代码段不工作了。我有点惊讶地发现了这一点。以前,我能够使用以下代码段自动 select PDF,但现在,什么都没有 selected。

 WebElement element = driver.findElement(By.name("as_q"));
 String finalQuery = "pink floyd";
 element.sendKeys(finalQuery);
 driver.findElement(By.id("as_filetype_button")).click();
 driver.findElement(By.xpath("//li[@class=class-name][@value='pdf']")).click();

我就是这样做的,找到与 class='goog-menuitem'value='pdf' 匹配的 li,我检查了元素。您可以直接使用 value='pdf',但为了确保我们查看的是文件类型下拉列表,我们添加了 class。

        driver.findElement(By.id("as_filetype_button")).click();
        driver.findElement(By.xpath("//li[@class='goog-menuitem'][@value='pdf']")).click();

你仍然可以用 WebElement 声明它,我只是更喜欢它 shorthand。希望这可以帮助。