Selenium元素隐藏在浮动标头后面
如果需要滚动,SeleniumWebDriver定位器总是将元素放在页面顶部,但它不会考虑浮动标题。目前,我创建了一个解决方案Selenium元素隐藏在浮动标头后面,selenium,selenium-webdriver,Selenium,Selenium Webdriver,如果需要滚动,SeleniumWebDriver定位器总是将元素放在页面顶部,但它不会考虑浮动标题。目前,我创建了一个解决方案 Actions actions = new Actions(this.webdriver); actions.sendKeys(Keys.ARROW_UP).perform(); 是否有更好的方法来告诉WebDebug在屏幕中间放置一个元素,而不是以一个固定的距离到顶部? 橙色部分来自按钮,蓝色部分是标题: 使用javascript查看元素。以下是一个可能的解决方案:
Actions actions = new Actions(this.webdriver);
actions.sendKeys(Keys.ARROW_UP).perform();
是否有更好的方法来告诉WebDebug在屏幕中间放置一个元素,而不是以一个固定的距离到顶部?
橙色部分来自按钮,蓝色部分是标题:
使用javascript查看元素。以下是一个可能的解决方案:
我相信您可以根据需要修改脚本。我解决了这样的问题,因此您只需定义元素不在范围内的情况并添加此方法,它将自动将其滚动到视图中:
public void将元素滚动到视图中(WebElementFacade元素){
int Y=(element.getLocation().getY()-200);
JavascriptExecutor js=(JavascriptExecutor)getDriver();
js.executeScript(“javascript:window.scrollTo(0,+Y+)”;”)}
适用于您可以通过id、css、xpath或任何方式找到的每个元素。Selenium还能够在与项目交互之前不将项目滚动到窗口顶部(因此将其隐藏在浮动标题后面),而是滚动到窗口底部 这是通过“elementScrollBehavior”功能实现的,该功能可以设置为1以将内容滚动到底部
请参阅。在本例中,我选择隐藏该浮动元素
top = dr.find_element_by_xpath('//div[@node-type="top_all"]')
dr.execute_script("arguments[0].setAttribute('style','display:none')", top)
在那之后,移动到我想要的元素,我甚至可以添加一个偏移量。关于这个问题的其他信息,如html页面的屏幕截图、实际html等,将为你的问题提供更多的上下文调整你的滚动方式,使所需元素处于可见阶段。你可以从robot类获得帮助,javascript执行器也可以根据需要滚动。这仅在可滚动容器是窗口时才有效。什么方法“getDriver()”?适用于页脚,等待轻微调整:“//footer”就足够了