import time
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.action_chains import ActionChains
o=Options(); o.set_preference('dom.webdriver.enabled',False)
d=webdriver.Firefox(options=o)
try:
    d.get('http://127.0.0.1:9999/geetest_page.html'); time.sleep(6)
    d.execute_script("""
      var b=document.querySelector('.geetest_btn'); var r=b.getBoundingClientRect();
      b.dispatchEvent(new MouseEvent('mousedown',{bubbles:true,cancelable:true,view:window,clientX:r.left+r.width/2,clientY:r.top+r.height/2,button:0,buttons:1}));
    """)
    time.sleep(0.2)
    moved=0
    for i in range(20):
        ActionChains(d).move_by_offset(5,0).perform(); moved+=5; time.sleep(0.03)
    time.sleep(0.2)
    d.execute_script("""
      var b=document.querySelector('.geetest_btn'); var r=b.getBoundingClientRect();
      b.dispatchEvent(new MouseEvent('mouseup',{bubbles:true,cancelable:true,view:window,clientX:r.left+r.width/2+arguments[0],clientY:r.top+r.height/2,button:0,buttons:0}));
    """, moved)
    time.sleep(4)
    print('validate',d.execute_script('return window.validateResult'))
    print('netlog count',d.execute_script('return (window.__netlog||[]).length'))
    print('netlog',d.execute_script('return JSON.stringify(window.__netlog||[]).slice(0,3000)'))
    print('res',d.execute_script("var e=document.querySelector('.geetest_result');return e?e.innerText:null"))
finally: d.quit()
