Continue work on itb

This commit is contained in:
2024-12-26 17:36:59 +01:00
parent eadd4eeabe
commit 63d1264f5a
10 changed files with 1281 additions and 342 deletions

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env python3
import sys
import os
import time
import random
import argparse
@@ -21,6 +22,13 @@ class ClickExecutor:
options.add_experimental_option("debuggerAddress", f"127.0.0.1:{debug_port}")
self.driver = webdriver.Chrome(options=options)
# Load JavaScript files
js_dir = os.path.join(os.path.dirname(__file__), "..", "js")
self.js_code = ""
for filename in ["viewport.js", "mouse.js"]:
with open(os.path.join(js_dir, filename)) as f:
self.js_code += f.read() + "\n"
# Get initial window info
self.window_size = self.driver.get_window_size()
debug(f"Window size: {json.dumps(self.window_size)}")
@@ -33,36 +41,15 @@ class ClickExecutor:
def get_viewport_size(self):
"""Get viewport dimensions"""
return self.driver.execute_script("""
return {
width: window.innerWidth,
height: window.innerHeight,
pageYOffset: window.pageYOffset,
pageXOffset: window.pageXOffset
};
""")
return self.driver.execute_script(self.js_code + "; return getViewportInfo();")
def get_scroll_position(self):
"""Get current scroll position"""
return self.driver.execute_script("""
return {
scrollX: window.scrollX,
scrollY: window.scrollY,
pageXOffset: window.pageXOffset,
pageYOffset: window.pageYOffset
};
""")
return self.driver.execute_script(self.js_code + "; return getViewportInfo();")
def get_mouse_position(self):
"""Get current mouse coordinates"""
return self.driver.execute_script("""
return {
screenX: window.screenX,
screenY: window.screenY,
clientX: window.event ? window.event.clientX : 0,
clientY: window.event ? window.event.clientY : 0
};
""")
return self.driver.execute_script(self.js_code + "; return getMousePosition();")
def scroll_to_target(self, x: int, y: int):
"""Scroll to make target coordinates visible"""
@@ -78,9 +65,7 @@ class ClickExecutor:
def get_element_at_position(self, x: int, y: int):
"""Get the element at the specified coordinates"""
return self.driver.execute_script("""
return document.elementFromPoint(arguments[0], arguments[1]);
""", x, y)
return self.driver.execute_script(self.js_code + "; return getElementAtPosition(arguments[0], arguments[1]);", x, y)
def execute_click(self, x: int, y: int, double: bool = False, right: bool = False):
"""Execute click operation with improved coordinate handling"""