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

Selenium 为什么moveByOffset()不适用于多个导航?,selenium,Selenium,传递坐标并在指定坐标处移动光标。当我第二次导航时,它不工作 actions = ActionChains(driver) actions.move_by_offset(x_axis,y_axis).click().perform() actions.release().perform() driver.get_screenshot_as_file(destination) 因此,我尝试为每次单击初始化web驱动程序,它可以工作: clickCoordinate(browser,869,

传递坐标并在指定坐标处移动光标。当我第二次导航时,它不工作

actions = ActionChains(driver)

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

actions.release().perform()

driver.get_screenshot_as_file(destination)
因此,我尝试为每次单击初始化web驱动程序,它可以工作:

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)  

请就如何在不必每次初始化的情况下实现这一点提供建议?

我认为这是因为move_by_offset()相对于光标的当前位置移动。对于绝对坐标,我成功地做到了
操作。通过偏移量将元素移动到元素(驱动程序。通过标记名称('body')、x轴、y轴查找元素)
始终相对于页面的左上角,因为那是body元素的开始位置。

我认为这是因为通过偏移量移动元素()相对于光标的当前位置移动。我对绝对坐标的成功所做的是
操作。将\u移动到带有\u偏移量的\u元素(驱动程序。通过\u标记\u名称('body')、x\u轴、y\u轴查找\u元素)
它将始终位于页面的左上角,因为body元素就是从这里开始的。

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

问题与鼠标坐标重置有关。在设置下一页坐标之前,每次都将坐标重置为0,0可以解决此问题。

下面的代码片段适用于我。 计算当前坐标减去以前的坐标,并将其存储到变量中,这里是轴x和轴y,然后应用“按偏移移动”并通过轴x和轴y进行多次导航

轴x=当前x-上一个

轴y=当前y-上一个


操作。按偏移量移动(x轴,y轴)。单击()。执行()

以下代码片段对我有效。 计算当前坐标减去以前的坐标,并将其存储到变量中,这里是轴x和轴y,然后应用“按偏移移动”并通过轴x和轴y进行多次导航

轴x=当前x-上一个

轴y=当前y-上一个


操作。按偏移量移动(x轴,y轴)。单击()。执行()

感谢Dean W的快速响应,但我不想使用元素,不给元素我想要绝对坐标。这不是移动到绝对坐标或将光标坐标重置为0,0的内置方法。body元素应该始终存在于DOM中,并且应该始终包含整个页面,因此根据我的经验,它是绝对坐标的合适解决方法。是否有任何原因说明使用元素不适合您的需要?感谢Dean W的快速响应,但我不想使用元素,如果不提供元素I want absolute cordinatere,这不是移动到绝对坐标或将光标坐标重置为0,0的内置方式。body元素应该始终存在于DOM中,并且应该始终包含整个页面,因此根据我的经验,它是绝对坐标的合适解决方法。是否有任何原因说明使用元素不适合您的需要?您正在循环中进行此操作,我知道这是一年多以后的事情,您是否可以发布更多关于如何使其工作的代码?您正在循环中进行此操作,我知道这是一年多以后的事情,您是否可以发布更多关于如何使其工作的代码?