【问题标题】:Not able to change select box value using select class in Java/webDriver无法使用 Java/webDriver 中的选择类更改选择框值
【发布时间】:2012-11-26 10:54:29
【问题描述】:
<span id="outDuration" class="check_duration last flL" onclick="hideCalendar('#pickUpDate');">
      <label style="width:95px">
      <span class="Class-Outmatch">
             <select id="duration" class="selectBox"  tabindex="7" name="duration">
                         <option selected="selected" value="1">1</option>
                         <option value="2">2</option>
                         <option value="3">3</option>
                         <option value="4">4</option>
                         <option value="5">5</option>
                         <option value="6">6</option>
                         <option value="7">7</option>
                         <option value="8">8</option>
                         <option value="9">9</option>
            </select>
            <span class="left_part flL firefinder-match"></span>
            <span class="selectBox center_part flL selectBox-dropdown" tabindex="7">
                         <span class="selectBox-label">5</span>

我无法更改选择框的值。 默认情况下,选择值 1。 如果我手动将其更改为 5,则以下 html 代码将值从 1 更改为 5。

<span class="selectBox-label">5</span> 

但是选项标签属性selected 没有改变。 选择标签是不可见的。

如果使用以下代码,则会出现异常。

Select select = driver.findElement(By.xpath("//span[@id='outDuration']/span/select")).SelectByVisibleText("5");

Exception: Element is not currently visible and so may not be interacted with

【问题讨论】:

  • 那么,这是什么,java 还是 javascript?

标签: java javascript xpath selenium webdriver


【解决方案1】:

您是否尝试过使用SelectByValue 而不是SelectByVisibleText

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • 这是这个页面的问题之一,它不允许新人通过评论来请求额外的信息,所以他们可以给出正确的答案,因为我没有足够的代表我只有 2 个选项,等待其他人请求信息,女巫不会提高我的代表或这样做,给出的答案不是真正的答案
  • 提高你的声誉..:) @RiccoE
【解决方案2】:

您提到选择标签是不可见的,这就是驱动程序给您错误的原因,因为它不可见,您无法与之交互。

Selenium 曾经允许与隐藏元素进行交互,但不允许与 webdriver 交互,因为它希望更恰当地模拟用户交互。

要在 webdriver 中实现这一点,您需要先通过使其在页面上可见的操作使 select 标签可见,然后使用 selectbylabel。此外,您的 xpath 似乎正在考虑 span id,而 select 标签本身有一个 id 来识别它。我建议直接使用 select 的 id 而不是走相对的方式。

【讨论】:

    【解决方案3】:

    使用这个:

    Select select=new Select(Utils.driver.findElement(By.xpath("//span[@id='outDuration']//select[@id='duration']")));
    select.deselectAll();
    select.selectByVisibleText("5");
    

    如果您也遇到可见性异常,那么您将不得不使用JavaScript Executor

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多