如何解决无法使用Selenium和Python从下拉菜单中选择
我真的很想从我要抓取的网站上的下拉菜单中选择一项。 HTML的代码如下所示:
char*
我已经尝试了所有可以想到的东西,并在StackOverflow上找到了!我注意到,这似乎可以选择实际的下拉框:
<select id="averagesMP" name="MP" onchange="reQuery(this);" style="width: 150px">
<option value="" selected="selected"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
,但我仅假定该方法有效,因为代码可以运行并且不会给出任何错误。但是,我仍然无法从下拉菜单中选择任何内容。我尝试过:
- find_element_by_xpath /名称/ id /标签/值/文本
- select_mp.select_by_value('2')
- select_mp.select_by_visible_text('2')
- select_mp.select_by_index(2)
- driver.find_element_by_xpath(“ //选择[@ name ='MP'] / option [@ value ='4']”)。click()
- driver.find_element_by_xpath(“ // option [@ value ='4']”)。click()
- driver.find_element_by_id('averagesMP')。click()
有人有什么建议吗?我知道这个问题似乎在这里被问到很多,但是我已经尝试了我在帖子中看到的所有内容,但它不起作用!看起来好像不是一个非常复杂的下拉菜单,只是很难捉摸。
一些有用的信息:
-
我正在使用Safari和SafariDriver
-
我不断收到以下错误消息:
select_mp = Select(driver.find_element_by_xpath("//select[@name='MP']"))
解决方法
要使用Selenium选择文本为 2 的<option>
,则需要为element_to_be_clickable()
引入WebDriverWait,并且可以使用以下任一方法以下Locator Strategies:
-
使用
CSS_SELECTOR
和select_by_visible_text()
:select = Select(WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"select#averagesMP[@name='MP']")))) select.select_by_visible_text('2')
-
在一行中使用
XPATH
和select_by_value()
:Select(WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//select[@id='averagesMP' and @name='MP']")))).select_by_value('2')
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import Select
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。