<p><code>driver.select_by_visible_text()</code>已经做了<code>strip()</code>。你不需要它。
此外,根据此方法定义:</p>
<pre><code>Select all options that display text matching the argument. That is, when given "Bar" this would select an option like:
<option value="foo">Bar</option>
:Args:
- text - The visible text to match against
</code></pre>
<p>因此,您需要准确地预期可见的选项。
代码中的另一个问题是传递变量的方式</p>
<pre><code>dropdown_option = "Some text you expect to see in the dropdown"
locator = driver.find_element_by_id("id") # or any other locator
select = Select(locator)
if locator is not None:
for option in select.options:
select.select_by_visible_text(dropdown_option)
</code></pre>
<p>此实现使调试更容易。例如,在选择所需选项之前,可以打印下拉列表中的所有值</p>
<p>如果下拉列表打开需要花费大量时间,或者其他元素使下拉列表暂时不可见,请在选择之前添加单独的等待</p>
<pre><code>from selenium.webdriver.support.select import Select
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located(
(By.CSS_SELECTOR, "Unique css selector of the first option in dropdown")))
</code></pre>