当前位置: 首页 > 知识库问答 >
问题:

无法使用selenium单击下拉菜单中的元素

夏元明
2023-03-14

我试图创建一个自动的网络会话,我登录到一个网站,并从下拉框中选择一个选项。我能够使用硒进入页面,但我无法点击打开下拉菜单的栏,然后选择我想要的选项。这是页面的截图,它的超文本标记语言代码:[![在此输入图像描述][1]][1][![在此输入图像描述][2]][2]

我想单击下拉列表中的“降级性能”选项。我有点被困在这里,因为下拉列表的HTML与[this one][3]根本不相似(无法“选择”)。我也尝试过观看YouTube视频,但没有成功:(。以下是我正在运行的脚本:

#login to status page if server status is not 'Ok'
driver = webdriver.Safari()

wait = WebDriverWait(driver, 20)

driver.get('https://manage.statuspage.io/login')

email = wait.until(EC.visibility_of_element_located((By.ID, "email")))
email.clear()
email.send_keys(user)
wait.until(EC.visibility_of_element_located((By.ID, "login-btn"))).click()
wait.until(EC.visibility_of_element_located((By.ID, "login-submit"))).click()
password = wait.until(EC.visibility_of_element_located((By.ID, "password")))
password.clear()
password.send_keys(passw)
driver.find_element_by_id('login-submit').click()

#Go to correct component

wait.until(EC.visibility_of_element_located((By.LINK_TEXT, "Components"))).click()
driver.get('https://manage.statuspage.io/pages/hfxvt9zqtn8m/components/g39hxh3gq0bc/edit')

#Change status 
wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "status-dropdown__value-container status-dropdown__value-container--has-value css-1b6odlt"))).click()

#here click on 'degraded performance'

#save
driver.find_element_by_id('btn-save-component').click()

The line ```wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "status-dropdown__value-container status-dropdown__value-container--has-value css-1b6odlt"))).click()``` returns a timeout exception. 
Any help would be really great!

文本格式的超文本标记语言:

<div class="status-dropdown__control css-4avucx-control"><div class="status-dropdown__value-container status-dropdown__value-container--has-value css-1b6odlt"><div class="status-dropdown__single-value css-lrg2au-singleValue" style="opacity: 1; transition: opacity 1ms;"><div class="_2cgnn8jOgeTLsVfOQFh5Rs"><i class="component-status page-colors text-color degraded_performance"></i><span style="padding-left: 8px; padding-bottom: 0px;">Degraded performance</span></div></div><input id="react-select-2-input" readonly="" tabindex="0" class="css-62g3xt-dummyInput" value=""></div><div class="status-dropdown__indicators css-t5ibhw"><div aria-hidden="true" class="status-dropdown__indicator status-dropdown__dropdown-indicator css-gg6ksl-indicatorContainer"><span role="img" aria-label="open" class="css-rq2oqu"><svg width="24" height="24" viewBox="0 0 24 24" role="presentation"><path d="M8.292 10.293a1.009 1.009 0 000 1.419l2.939 2.965c.218.215.5.322.779.322s.556-.107.769-.322l2.93-2.955a1.01 1.01 0 000-1.419.987.987 0 00-1.406 0l-2.298 2.317-2.307-2.327a.99.99 0 00-1.406 0z" fill="currentColor" fill-rule="evenodd"></path></svg></span></div></div></div>

  [1]: https://i.stack.imgur.com/62NnJ.png
  [2]: https://i.stack.imgur.com/zMbo0.png
  [3]: https://stackoverflow.com/questions/7867537/how-to-select-a-drop-down-menu-value-with-selenium-using-python

共有1个答案

时宾实
2023-03-14

请参阅您无法使用从Selenium中选择,因为这意味着使用选择和选项标记构建的下拉列表。

相反,我建议您直接点击降级性能

driver.find_element_by_xpath("//span[contains(text(),'Degraded Performance')]").click()

另外,我认为首先需要单击下拉栏,然后上面的代码应该可以工作,可能还需要使用显式等待。

更新1:

而不是

wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "status-dropdown__value-container status-dropdown__value-container--has-value css-1b6odlt"))).click() 

试试这个:

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div[class^='status-dropdown__single-value']+input"))).click()
 类似资料:
  • 嗨,我正在尝试自动启动下拉菜单。默认情况下,它的可见性是隐藏的。将鼠标悬停在它上面时,它的可见性属性显示为可见。我可以单击下拉菜单,但是在单击下拉菜单后,我的selenium脚本不能从下拉菜单中选择值。 错误:线程"main"org.openqa.selenium.ElementNotVisibleException异常:无法单击元素 HTML代码段

  • 在我们的应用程序中,当我将鼠标放在菜单项上时,下拉菜单项就会出现,我希望通过单击该菜单项来选择该菜单项。菜单的结构如下所示, 在selenium webdriver中,我尝试通过给出xpath、linktext、部分链接文本直接单击Manage Channels。但在选项中,它表示无法定位元素。我附上一张截图以供参考

  • 我有在下拉列表中选择每个选项的测试用例,但无论我目前做什么,我都会遇到这个错误。 结果消息:系统。InvalidOperationException:元素在点(1170.0333251953125405.4250030517578)处不可单击,因为另一个元素遮挡了它 目前正试图用这个代码改变年份 - WebElement是这样定义的 这是selenium尝试选择拾取时下拉列表的样子。我看不到任何东

  • 下面是正确的错误消息:Traceback(最近的调用):文件“C:/users\shishir sinha/pycharmprojects/australia/australia.py”,第33行,in driver.find_element_by_xpath(“.//[@id='ui-menu-0-1']”)。单击()文件“C:\users\shishir sinha\appdata\local

  • 在我们的应用程序中,当我将鼠标放在菜单项上时,将出现下拉菜单项。在这里我想通过点击它来选择一个项目。主菜单:管理子菜单:管理频道,管理用户在selenium webdriver中,我尝试通过给出xpath,linktext,partial link文本直接点击管理频道。

  • 你好,我正在使用selenium,并且已经成功地设置了id历史的文本字段,但是无法从