如果需要滚动,Selenium webdriver定位器总是将元素放在页面顶部,但它不会考虑浮动标题。目前我用
创建了一个解决方法Actions actions = new Actions(this.webdriver);
actions.sendKeys(Keys.ARROW_UP).perform();
是不是有一个更好的解决方案告诉webdriver将一个元素置于屏幕中间而不是固定距离顶部?
橙色部分来自按钮,蓝色部分是标题:
答案 0 :(得分:1)
使用javascript将元素置于视图中。这是一个可能的解决方案:
请参阅我在此处创建的javascript实用程序类:https://github.com/gterre/stuff
用法... JavascriptUtils.bringIntoView(WebElement元素);
我确信您可以根据需要修改脚本。
答案 1 :(得分:1)
Selenium还能够在与项目交互之前不将项目滚动到窗口顶部(因此将它们隐藏在浮动标题后面),而是隐藏在底部。
这是通过'elementScrollBehavior'功能实现的,该功能可以设置为1以将内容滚动到底部。
答案 2 :(得分:1)
就我而言,我选择隐藏浮动元素。
top = dr.find_element_by_xpath('//div[@node-type="top_all"]')
dr.execute_script("arguments[0].setAttribute('style','display:none')", top)
之后,移动到我想要的元素,我甚至可以添加偏移量。
答案 3 :(得分:0)
我解决了这样的问题,所以你只需要定义你的元素不在范围内的情况并添加这个方法,它会自动将其滚动到视图中:
public void scroll_element_into_view(WebElementFacade element) {
int Y = (element.getLocation().getY() - 200);
JavascriptExecutor js = (JavascriptExecutor) getDriver();
js.executeScript("javascript:window.scrollTo(0," + Y + ");");}
适用于您可以通过id,css,xpath或任何其他方式找到的每个元素。