php - 如何滚动组合框的列表以在 Selenium php-webdriver 中显示选项?
问题描述
我有一个包含一长串选项的组合框,导致列表有一个滚动条。我希望 Selenium 滚动当前隐藏在视图中的选项之一并单击它,就像用户选择它一样。我该怎么做呢?我试过调用元素的getLocationOnScreenOnceScrolledIntoView()
方法 and $webDriver->executeScript('arguments[0].scrollIntoView(true);', [$option])
,但都没有奏效。(第一个似乎滚动页面,而不仅仅是包含元素;第二个似乎没有做任何事情。)点击只是抛出一个 ElementClickInterceptedException 因为我想要点击的元素(选项)被另一个元素(列表的包装器)遮挡。
解决方案
事实证明,我未能将选项滚动到视图中是由于组合框的构造方式,而不是我将选项滚动到视图中的操作。(列表中的选项是 DIV 而不是 LI,并且测试代码期待后者,因此选项列表返回为空。修复组合框后,executeScript()
问题中的调用有效。)
更新:事实证明,您不必为了让 Selenium 能够单击它而将长列表中的组合框选项滚动到视图中。
进一步更新:事实证明,在某些情况下,您确实需要将选项滚动到视图中,以确保它,而不是另一个类似的选项,是被点击的选项,所以最安全的方法是使用executeScript()
问题中的调用进行滚动。
推荐阅读
- javascript - Redux - 调度动作(onClick 事件)
- karate - 空手道中的 Swtich 浏览器
- vue.js - Vue 将组件 1 中的数据传递给组件 2 中的方法
- flutter - 在将数据从 API 加载到 Flutter 中的 ListView 时加载微调器
- r - 如何根据值和积分该值的微积分结果填充新数据框?
- typescript - TypeScript 不推断特定类型
- javascript - onClick 不一致
- android - SQLite:消除后创建新项目时的 ID 错误
- salesforce-lightning - Salesforce - Aura 组件发布使用消息服务问题
- excel - Angular 5 - 如何使用 HTTPRespose.blob()?