import time,subprocess,json
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
o=Options(); o.set_preference('dom.webdriver.enabled',False)
o.set_preference('devtools.console.stdout.content',True)
d=webdriver.Firefox(service=Service('./gd0371/geckodriver'), options=o)
def xdo(*a): subprocess.run(['xdotool',*map(str,a)],check=False)
try:
    d.set_window_position(0,0); d.set_window_size(1000,820)
    d.get('http://127.0.0.1:9999/geetest_page.html'); time.sleep(6)
    info=d.execute_script("var b=document.querySelector('.geetest_btn');var q=b.getBoundingClientRect();return {sx:window.mozInnerScreenX,sy:window.mozInnerScreenY,px:q.left+q.width/2,py:q.top+q.height/2};")
    X=int(info['sx']+info['px']);Y=int(info['sy']+info['py'])
    xdo('mousemove',X,Y);time.sleep(0.3);xdo('mousedown',1);time.sleep(0.2)
    for i in range(20):
        xdo('mousemove',X+(i+1)*5,Y);time.sleep(0.03)
    xdo('mouseup',1);time.sleep(4)
    print('validate',d.execute_script('return window.validateResult'))
    urls=d.execute_script("return performance.getEntriesByType('resource').map(function(e){return e.name}).filter(function(u){return u.indexOf('geetest')>=0})")
    print('resources',json.dumps(urls,indent=1)[:3000])
    try:
        print('console',d.get_log('browser')[-10:])
    except Exception as e: print('nolog',e)
finally: d.quit()
