【问题标题】:I am trying to handle the select element using Webdriver我正在尝试使用 Webdriver 处理选择元素
【发布时间】:2017-03-29 19:56:31
【问题描述】:

我正在尝试从下拉列表中获取值。我有一门课可以上传一个视频,然后我想发布。我需要更改状态才能做到这一点。我看到另一个人问了类似的问题,但这些建议似乎都不起作用。我正在提供html,调用类中的方法和方法。非常感谢任何帮助。

这是选择在网页上的样子:

<select id="group_media_953_status" class="status" name="group_media_attributes[953][status]" style="display: none;">
    <option value="published" selected="selected">Published</option>
    <option value="scheduled">Scheduled</option>
    <option value="unpublished">Not Published</option>
</select>

这是我对方法的调用:

dropdown("group_media_953_status", "Published");

方法如下:

    public void dropdown(String name, String sel) {
        try {
            WebElement select = driver.findElement(By.id(name));
            List<WebElement> options =    select.findElements(By.tagName("option"));
            for (WebElement option : options) {
                System.out.println(option.getText());
        //     if(sel.equals(option.getText()))
        //         option.click(); 
            }
        } catch (NoSuchElementException ex) {
            System.err.println("Element in dropdown menu was not found");
            driver.quit();
            System.exit(0);
        }
    }

这里是完整的 html。我没有编写 html 代码,因此无法更改它:

        <td class="group-status">
        <div class="field status">
        <select id="group_media_9870_status" class="status"      name="group_media_attributes[9870][status]" style="display: none;">
    <option value="published" selected="selected">Published</option>
    <option value="scheduled">Scheduled</option>
    <option value="unpublished">Not Published</option>
    </select>

<div id="group_media_9870_status_chosen" class="chosen-container chosen-container-single chosen-container-single-nosearch" style="width: 0px;" title="">
<a class="chosen-single published">
<span>Published</span>
<div>
<b></b>
</div>
</a>
<div class="chosen-drop">
<div class="chosen-search">
<ul class="chosen-results">
</div>

我也尝试了 xpath,但也没有找到 select 元素。 /html/body/div[1]/section/div/div/form[2]/table/tbody/tr[1]/td[3]/div[1]/select 仍然没有找到“选择"元素。

【问题讨论】:

标签: java selenium webdriver


【解决方案1】:

您是否尝试过使用 Select 类?

import org.openqa.selenium.support.ui.Select;

public void dropdown(String name, String sel) {
        try {
              Select select = driver.findElement(By.id(name));
              select.selectByValue(sel);
        } catch (NoSuchElementException ex) {
            System.err.println("Element in dropdown menu was not found");
            driver.quit();
            System.exit(0);
        }
    }

【讨论】:

  • 是的。这是我在帖子中找到的选项之一。发生的事情是它没有在页面上找到“选择”元素。我尝试过使用类名、xpath、id 和名称,但似乎都没有。我已经花了一整天的时间,这真的不应该那么困难。还有其他类似的项目使用下拉操作而不是选择,但开发人员出于某种原因在这里选择了选择。 :(
  • 看看您发布的 html 的第一个 sn-p 和第二个。您的选择对象中似乎有一个动态编号 group_media_'953'_status。尝试编写一个类似 .//div[@class='field status']/select 的 xpath 并使用它而不是选择的 id
猜你喜欢
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 1970-01-01
  • 2023-01-26
相关资源
最近更新 更多