如何滚动组合框的列表以在 Selenium php-webdriver 中显示一个选项?

How to scroll a combobox's list to bring an option into view in Selenium php-webdriver?

我有一个包含一长串选项的组合框,导致该列表有一个滚动条。我希望 Selenium 将当前隐藏的选项之一滚动到视图中并单击它,就像用户对 select 它所做的那样。我该怎么做呢?我试过调用元素的 getLocationOnScreenOnceScrolledIntoView() 方法和 $webDriver->executeScript('arguments[0].scrollIntoView(true);', [$option]),但均无效。 (第一个似乎滚动页面,而不仅仅是包含元素;第二个似乎什么也没做。)点击只是抛出一个 ElementClickInterceptedException 因为我想点击的元素(选项)被另一个元素(列表的包装器)遮挡。

事实证明,我无法将选项滚动到视图中是由于组合框的构造方式,而不是我将选项滚动到视图中的操作。 (列表中的选项是 DIV 而不是 LI,测试代码预期是后者,因此选项列表返回为空。修复组合框后,问题中的 executeScript() 调用有效。)

更新:事实证明,您不必将长列表中的组合框选项滚动到视图中,以便 Selenium 能够单击它。

进一步更新:事实证明,在某些情况下,您确实需要将选项滚动到视图中,以确保它而不是另一个类似的选项是被点击的那个,所以最安全的方法是使用问题中的 executeScript() 调用进行滚动。