python - 在 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")>
我很困惑我哪里出错了。提前致谢 。你们是最棒的 :)
解决方案
这是硒自动化中最糟糕的做法之一
出于多种原因,不建议使用 WebDriver 登录 Gmail 和 Facebook 等网站。除了违反这些网站的使用条款(您有可能关闭帐户)之外,它速度慢且不可靠。
理想的做法是使用电子邮件提供商提供的 API,或者在 Facebook 的情况下使用开发人员工具服务,该服务公开了用于创建测试帐户、朋友等的 API。尽管使用 API 可能看起来有点额外的艰苦工作,但您将在速度、可靠性和稳定性方面得到回报。API 也不太可能更改,而网页和 HTML 定位器经常更改并需要您更新测试框架。
在测试的任何时候使用 WebDriver 登录第三方站点都会增加测试失败的风险,因为它会使测试时间更长。一般的经验法则是更长的测试更脆弱和不可靠。
请参考 selenium 网站
推荐阅读
- c# - 如何从内存中获取任何进程的网络流量?
- hyperlink - 使用 Clang 和 LLVM ELF ld.LLD 链接器时,如何从可执行文件中删除符号?
- python - 为“星号前缀”后缀提取域
- javascript - 如何在合并排序期间“暂停”以可视化 JS p5js
- javascript - 为什么我得到 null 的“querySelector”?我在这段代码中做错了什么?
- c# - 如果调试器需要很长时间才能执行某些操作,则在执行过程中退出
- ruby-on-rails - 由于捆绑程序版本,Dokku 失败
- flutter - 如何将小部件作为我班级的输入变量
- soap - 如何为 SoapUI 项目中的请求编写复杂的 dispatchPath?
- blazor-server-side - 如果未通过身份验证,如何重定向到登录页面