为什么moveByOffset()不能用于多个导航?

时间:2017-10-10 10:37:29

标签: selenium

传递坐标并将光标移动到指定的坐标。当我第二次导航时,它无法正常工作

actions = ActionChains(driver)

actions.move_by_offset(x_axis,y_axis).click().perform()

actions.release().perform()

driver.get_screenshot_as_file(destination)

所以,我尝试在每次点击时初始化网页驱动程序,它可以运行:

clickCoordinate(browser,869, 95,dest1)
url=browser.current_url
try:
    browser = get_selenium_driver()
    browser.get(url)
except Exception as err:
    logger.error("Error compiling data: %s", err)
    clickCoordinate(browser,1047, 60,dest2)  

请告知如何在不必每次初始化的情况下实现这一目标?

3 个答案:

答案 0 :(得分:2)

我相信它是因为move_by_offset()相对于光标的当前位置移动。我在绝对坐标方面取得的成功是actions.move_to_element_with_offset(driver.find_element_by_tag_name('body'), x_axis,y_axis),它始终与页面的左上角相关,因为这是身体元素开始的地方。

答案 1 :(得分:1)

以下代码片段对我有用。 计算当前坐标减去先前的坐标并存储到变量中,这里是axis_x和axis_y然后应用move_by_offset并传递axis_x和axis_y以多次导航

axis_x = curr_x - prev_x

axis_y = curr_y - prev_y

actions.move_by_offset(axis_x,axis_y)。单击()。执行()

答案 2 :(得分:0)

问题与鼠标坐标重置有关。这可以通过在设置下一页坐标之前每次将坐标重置为0来解决。