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

问题描述

我有一个组合框,其中有很长的选项列表,导致该列表带有滚动条。我希望Selenium滚动当前隐藏在视图中的选项之一,然后单击它,就像用户选择它一样。我该怎么做呢?我试过调用元素的getLocationOnScreenOnceScrolledIntoView()方法$webDriver->executeScript('arguments[0].scrollIntoView(true);',[$option]),但是都没有用。 (第一个似乎是在滚动页面,而不只是滚动包含的元素;第二个似乎没有执行任何操作。)单击只是引发ElementClickInterceptedException,因为我要单击的元素(该选项)被另一个元素(列表的包装器)遮盖。

解决方法

事实证明,我无法将选项滚动到视图中是由于组合框的构造方式,而不是我正在将选项滚动到视图中。 (列表中的选项是DIV而不是LI,并且测试代码期望LI,所以选项列表返回为空。修复组合框后,问题中的executeScript()调用起作用。)

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

进一步的更新:事实证明,在某些情况下,您确实需要将选项滚动到视图中以确保单击该选项(而不是其他类似选项)继续,因此最安全的方法是使用问题中的executeScript()调用进行滚动。