当元素为“巨大”时,Selenium元素未滚动到视口中

时间:2015-04-14 18:03:16

标签: python selenium webdriver

我正在使用Selenium Webdriver和Python进行单元测试。当我尝试测试点击网页上的元素时,出现错误: IE:11,Windows-7

ElementNotVisibleException: Message: The point at which the driver is attempting to click on the element was not scrolled into the viewport.

即使我试图在视图中垂直和水平移动元素。单击带有e.click()的元素时仍然存在错误。 我在网上搜索并找到了这个,并将e.click()更改为webdriver.ActionChains(driver).move_to_element(e).click(e).perform()。现在它通过,但它实际上没有点击,它似乎只是跳过这一行。

这是我的代码段:

e = elems.find_element_by_xpath("//*[@id='schedItem_10262']/div[2]") # find the sub-element from elems by xpath
self.scroll_element_into_view(e)
e.click()
#webdriver.ActionChains(driver).move_to_element(e).click(e).perform()

def scroll_element_into_view(self, element):
    """Scroll element into view"""
    x = element.location['x']
    self.driver.execute_script('window.scrollTo({0}, 0)'.format(x))
    y = element.location['y']
    self.driver.execute_script('window.scrollTo(0, {0})'.format(y))

当元素“巨大”无法放入窗口时,就会出现问题。有什么方法可以点击“巨大的”元素吗?

我对此很新。欢迎任何建议。感谢。

更新 使用以下代码访问并单击:

e = driver.find_element_by_xpath("//*[@id='schedItem_10262']/div[2]")
self.scroll_element_into_view(e)
e.click()

pic

这是一张快照,显示所有案例的时间表,这张照片中有两种情况。 “疝气”和“跨性别”。红色的“疝气”持续很长时间,所以它没有完全显示在网页上。

我想逐个点击每个案例,看看每个案例是否有弹出的窗口。当我试图单击manully这两种情况时,它们工作正常。但是,当我尝试点击click()时,“疝气”会导致错误,element was not scrolled into the viewport

1 个答案:

答案 0 :(得分:0)

而不是scrollTo(),请在所需元素上调用scrollIntoView()

driver.execute_script("arguments[0].scrollIntoView(true);", element)