如何使用Selenium WebDriver

时间:2018-01-31 11:24:19

标签: javascript python selenium

我不是母语为英语的人,对不起我的英语。 :)

我正在使用Selenium Webdriver + Python。我的页面上有自定义滚动条。

<div class="k-scrollbar k-scrollbar-vertical" style="width: 18px;"><div style="width:1px;height:1102px"></div></div>


    <div style="width:1px;height:1102px"></div>

此滚动条的EV有方法&#34;滚动&#34;,代码为:

function updateGridScrollInState() {
  if (typeof window.GridProfile_Grid === 'object') {
    window.GridProfile.ScrollY = window.GridProfile_Grid.data("kendoGrid").virtualScrollable.verticalScrollbar.scrollTop();
  }
}

我可以用它来操作,我知道滚动条的定位器,但我无法理解如何通过driver.execute_script(some_script)使用javascript滚动到特定元素到网格中。

我需要移动到位于视口外部的元素:它是网格,网格有33行,但只显示22行,如果我向下滚动则显示其他11行。我试图拖动并滚动此滚动条:

ActionChains(driver).drag_and_drop(my_custom_scrollbar,  list_of_grid_rows[30]).perform()

但我得到了Exeption:

selenium.common.exceptions.MoveTargetOutOfBoundsException: Message: (1015, 1242.699951171875) is out of bounds of viewport width (1920) and height (968)

我想我只能在没有显示list_of_grid_rows [index]的情况下执行drag_and_drop。但是我怎么能得到这个结果呢?也许我必须以某种方式使用滚动条的高度值?

谢谢你的进步!

1 个答案:

答案 0 :(得分:0)

python API有一个element属性,可以将所需的元素滚动到视图中。我认为即使在页面上有自定义滚动它仍然可以工作。第一步是将要滚动的元素的定位器放入视图中。听起来你有这个。我们称之为[元素]。接下来,如果您已验证它存在于页面上,请执行以下操作:

coordinates = [element].location_once_scrolled_into_view

即使您可能不关心坐标,此命令也会导致目标滚动到视图中。 Selenium Python Element API