我正在编写工作自动化,但被下拉列表卡住了。有问题的特定选择框如下:
<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+Tabs,直到我到达此下拉列表,然后向下箭头键。但只想将其用作最后的手段。
注意: - 我正在使用Python 3和Chrome。
您可以尝试使用此代码从下拉列表中选择值:
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")))
作为最后的手段,您可以继续:
drop_down= driver.find_element_by_id("select-size-bulk-asin")
drop_down.click()
actions = ActionChains(driver)
actions.send_keys(Keys.ARROW_DOWN)
actions.send_keys(Keys.ARROW_DOWN)
actions.send_keys(Keys.ENTER)
actions.perform()