首页 > 解决方案 > 在 Selenium 中使用 python 查找下拉菜单中的项目数

问题描述

我正在编写一个脚本来计算网页下拉菜单中的选项数量 - https://docs.google.com/forms/d/e/1FAIpQLSeI8_vYyaJgM7SJM4Y9AWfLq-tglWZh6yt7bEXEOJr_L-hV1A/viewform?formkey=dGx0b1ZrTnoyZDgtYXItMWVBdVlQQWc6MQ

如果下拉菜单在选择类中,我理解了这个概念 - 看到了很多视频和示例,但由于它在 div 类中,我无法弄清楚如何做到这一点,这是我到目前为止得到的,它抛出我一个错误。

driver.find_element_by_css_selector("div[role=presentation]").click()
dr=driver.find_elements_by_css_selector("div[role=option]")

print(len(dr))
for iterate in dr:
    print(iterate)

答案显示 4,当它应该是 3 并且选项打印不正确时。

4
<selenium.webdriver.remote.webelement.WebElement (session="315b0a46b5fb15dbde9e2b2623204de1", element="aa3a69a2-f35a-469a-928d-b3e82daacb7b")>
<selenium.webdriver.remote.webelement.WebElement (session="315b0a46b5fb15dbde9e2b2623204de1", element="6d7a55f4-f894-4bbf-bb63-48d156d7b1c2")>
<selenium.webdriver.remote.webelement.WebElement (session="315b0a46b5fb15dbde9e2b2623204de1", element="e0fa0747-5488-4f77-bd7d-c516c0c83731")>
<selenium.webdriver.remote.webelement.WebElement (session="315b0a46b5fb15dbde9e2b2623204de1", element="bfbb8e26-dcde-4cbc-b145-2a8598d77dcb")>

我很困惑我哪里出错了。提前致谢 。你们是最棒的 :)

标签: pythonseleniumselenium-webdriver

解决方案


这是硒自动化中最糟糕的做法之一

出于多种原因,不建议使用 WebDriver 登录 Gmail 和 Facebook 等网站。除了违反这些网站的使用条款(您有可能关闭帐户)之外,它速度慢且不可靠。

理想的做法是使用电子邮件提供商提供的 API,或者在 Facebook 的情况下使用开发人员工具服务,该服务公开了用于创建测试帐户、朋友等的 API。尽管使用 API 可能看起来有点额外的艰苦工作,但您将在速度、可靠性和稳定性方面得到回报。API 也不太可能更改,而网页和 HTML 定位器经常更改并需要您更新测试框架。

在测试的任何时候使用 WebDriver 登录第三方站点都会增加测试失败的风险,因为它会使测试时间更长。一般的经验法则是更长的测试更脆弱和不可靠。

请参考 selenium 网站


推荐阅读