我正在使用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()
这是一张快照,显示所有案例的时间表,这张照片中有两种情况。 “疝气”和“跨性别”。红色的“疝气”持续很长时间,所以它没有完全显示在网页上。
我想逐个点击每个案例,看看每个案例是否有弹出的窗口。当我试图单击manully这两种情况时,它们工作正常。但是,当我尝试点击click()
时,“疝气”会导致错误,element was not scrolled into the viewport
答案 0 :(得分:0)
而不是scrollTo()
,请在所需元素上调用scrollIntoView()
:
driver.execute_script("arguments[0].scrollIntoView(true);", element)