使用Python + Selenium选择一个下拉菜单

时间:2018-06-24 08:06:05

标签: python-3.x selenium selenium-chromedriver

我正在为工作编写自动化程序,并且陷入了下拉菜单。有问题的特定选择框如下:

<span class="a-dropdown-container" id="select-size-bulk-asin">
    <select name="display_type" class="a-native-dropdown">
        <option value="SMALL-IMAGES">SMALL-IMAGES</option>
        <option value="LARGE-IMAGES">LARGE-IMAGES</option>
        <option value="TEXT">TEXT</option>
    </select>

    <span tabindex="-1" data-a-class="a-spacing-small" class="a-button a-button-dropdown a-spacing-small">
        <span class="a-button-inner">
        <span class="a-button-text a-declarative" data-action="a-dropdown-button" aria-haspopup="true" role="button" tabindex="0" aria-pressed="false" aria-owns="2_dropdown_combobox">
        <span class="a-dropdown-prompt">SMALL-IMAGES</span>
        </span>
        <i class="a-icon a-icon-dropdown"></i>
        </span>
        </span>
    </span>

它默认为“小图像”,我想选择“文本”选项。我收到元素不可点击错误。页面很简单,该元素在屏幕上可见。

我尝试过的方法列表为:

  • 使用WebDriverWait等待元素可见;
  • 使用WebDriverWait等待元素可单击;
  • 使用选择类设置所选选项;
  • 我还仔细阅读了一个问题。

我正在考虑是否应该转到下一个元素并发送Shift + Tab,直到到达此下拉列表,然后按下向下箭头键。但是只想将其用作最后的手段。

注意:  -我正在使用Python 3和Chrome。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码从下拉列表中选择值:

murmur3_128

但是,正如您提到的,您收到的是元素不可点击的异常。您可以尝试以下代码:

select = Select(driver.find_element_by_id('select-size-bulk-asin'))
select.select_by_visible_text('TEXT')  

作为最后的选择,您可以继续:

WebDriverWait(browser, 30).until(EC.element_to_be_clickable((By.ID, "select-size-bulk-asin")))