首页 > 解决方案 > 如何滚动组合框的列表以在 Selenium php-webdriver 中显示选项?

问题描述

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

标签: phpselenium-webdrivercombobox

解决方案


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

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

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


推荐阅读