贛州有沒有做網(wǎng)站的技術(shù)培訓機構(gòu)
pyautogui 配合 selenium 實現(xiàn)桌面坐標系定位元素坐標,模擬真實鼠標行為。
場景:當我需要點擊某個元素,或者觸發(fā)瀏覽器的自動填充賬號密碼時,自動化點擊無效。但是想要模擬真實鼠標點擊又需要元素的坐標通過pyautogui來實現(xiàn)。通過selenium node.location獲取的坐標是相當于瀏覽器實際內(nèi)容窗口的坐標系,不能滿足pyautogui 直接去自動化操作。這時可以通過瀏覽器js 獲取菜單等實際邊框大小計算出 實際的node.location零點位置相對于桌面坐標的坐標系,從而得出元素在桌面坐標系的位置。這樣不管怎么操作一般都不會相差太多。
注:未考慮滑動條存在的情況
代碼如下:
def get_node_position(driver, node):"""獲取元素相對于window窗口上的絕對坐標:param driver: 瀏覽器自動化對象:param node: 定位到的元素對象:return: """window_rect = driver.get_window_rect()menu = driver.execute_script("return window.outerHeight - window.innerHeight")border = driver.execute_script("return window.outerWidth - window.innerWidth")origin_y = window_rect['y'] + menu - (border / 2)origin_x = window_rect['x'] + (border / 2)return {"x":node.location['x']+origin_x,"y":node.location['y']+origin_y}
// pyautogui 左鍵點擊
import pyautogui as gui
gui.click(100, 100)