python用selenium网页模拟时无法定位元素解决方法
情景:selenium缩放页面后,模拟点击,报StaleElementReferenceException错误。
解决方法1:固定缩放原点,调整宽、高,以保证要素布局(感谢GPT提供灵感)
解决方法2:模拟键盘三次“Ctrl”+“-” ,让网页自动调整布局
#固定缩放原点,调整宽、高,以保证要素布局
driver.get(url)
driver.execute_script("""
document.body.style.transform = 'scale(0.75)';
document.body.style.transformOrigin = '0 0';//固定原点为左上角
document.body.style.width = '133.33%'; // 由于缩放导致的宽度调整
document.body.style.height = '133.33%'; // 由于缩放导致的高度调整
""")
time.sleep(2)
driver.find_element(By.XPATH, '*').send_keys(username)
driver.find_element(By.XPATH, '*').send_keys(password)
#模拟键盘三次“Ctrl”+“-”
for _ in range(3):
pyautogui.hotkey('ctrl', '-')
time.sleep(0.5)
time.sleep(3)