【问题标题】:How to select items from drop down menu using Selenium?如何使用 Selenium 从下拉菜单中选择项目?
【发布时间】:2016-06-13 16:58:43
【问题描述】:

我一直在尝试使用 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 选项。有什么帮助吗?

我正在使用 Selenium 2.53.0。

编辑

以下代码段完全符合此问题的公认答案。但是,突然之间,代码段无法正常工作。我有点惊讶地发现这一点。以前,我可以使用以下代码段自动选择 PDF,但现在没有任何选择。

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

【问题讨论】:

    标签: java selenium selenium-webdriver web-scraping web-crawler


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。有效。您是如何找到类 goog-menuitem 和值的?我真的需要理解这一点,因为也许在某些时候,我可能不得不从这个页面上的其他 drop 溺水中选择值。
    • F12 检查元素,单击下拉菜单转到 html 源代码的底部,您将在那里看到每个下拉菜单的不同菜单,这是自定义 javascript 下拉菜单的常用方法。如果我的回答对您有所帮助,请接受此答案,将不胜感激!谢谢
    • 太棒了!谢谢!
    • 有趣的是,该解决方案并没有突然起作用。可能是什么原因?下拉选项不再被选中。但是,根据这个建议,它之前工作得很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多