在Python中将光标实际移动到Web元素

2024-10-05 09:59:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把光标移到一个web元素上(而不是模拟它),然后按住shift键并按偏移量单击另一个元素。在

我得到了按住shift键并使用pyautogui单击第二个元素:

import pyautogui

pyautogui.keyDown('shift')
pyautogui.moveRel(0, 62)
pyautogui.click()
pyautogui.keyUp('shift')

我的问题是将鼠标移动到原始web元素,然后执行上面的代码。Pyautogui提供了移动到绝对x,y协调器的选项,但是在我的例子中它不起作用,因为web元素的绝对位置改变了。在

你知道我怎么做吗?最好使用python(pyautogui、selenium等)?在

浏览器是chrome,操作系统是osx


Tags: 代码importweb元素shift选项鼠标偏移量
3条回答

如果您想继续使用PyAutoGUI,我建议您使用图像识别功能。在网页上截取元素的截图,并将截图裁剪为元素(使用mspaint甚至在线裁剪工具)。在

然后运行:

>>> x, y = pyautogui.locateCenterOnScreen('croppedscreenshot.png')
>>> pyautogui.moveTo(x, y)
>>> pyautogui.keyDown('shift')
>>> pyautogui.click(x, y)
>>> pyautogui.keyUp('shift')

当然,这是脆弱和容易出错的。它依赖于在屏幕上可见的元素,如果您使用的浏览器与屏幕截图所用的浏览器不同,则可能无法正常工作。在

使用Selenium或其他类似的工具会更好。在

在我看来,来自EficodeImageHorizonLibrary可能对你有用。这个库可以在Linux和Windows上运行并移动鼠标。在

下面是两步鼠标移动的示例脚本。该库还有许多单击选项Keywords,这似乎是合乎逻辑的下一步操作。在

*** Settings ***
Library    ImageHorizonLibrary

*** Test Cases ***

Mouse Test
    Sleep    2Sec
    Move To    345     345
    Sleep    2Sec
    Move To    1800    720

(不幸的是,我只能和这个人谈硒)

您可以使用硒的作用,即(示例为C#)

new Actions(driver)
    .MoveToElement(element1)
    .KeyDown(Keys.Shift)
    .MoveByOffset(offset)
    .Click(element2)
    .KeyUp(Keys.Shift)
    .Perform();

如果你使用的是Java(从我读到的)还有一个机器人的概念来处理这类事情,也就是说,看这个线程https://stackoverflow.com/a/12978079/3110529

相关问题 更多 >

    热门问题