spline optimization experiments + fixes
This commit is contained in:
parent
4cb94cdd81
commit
957a3174d8
20
main.py
20
main.py
|
@ -9,12 +9,13 @@ from threading import Timer, Lock
|
||||||
|
|
||||||
import selenium
|
import selenium
|
||||||
from selenium import webdriver
|
from selenium import webdriver
|
||||||
|
from selenium.webdriver.common.action_chains import ActionChains
|
||||||
import lxml.etree as etree
|
import lxml.etree as etree
|
||||||
from cssselect import HTMLTranslator, SelectorError
|
from cssselect import HTMLTranslator, SelectorError
|
||||||
import requests as req
|
import requests as req
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
import math
|
from spline import gcv,bspline
|
||||||
#import web
|
#import web
|
||||||
|
|
||||||
DB_HOST = "127.0.0.1"
|
DB_HOST = "127.0.0.1"
|
||||||
|
@ -118,14 +119,18 @@ def getContent(entryUrl, session_cookies, selector):
|
||||||
return a.tostring()
|
return a.tostring()
|
||||||
|
|
||||||
#p1 = (23.,23.)
|
#p1 = (23.,23.)
|
||||||
def move_mouse(p1, p2, driver, time=1000, n=400, click=False):
|
def move_mouse(p1, p2, driver, time_=1000, n=400, click=False):
|
||||||
|
|
||||||
action = ActionChains(driver);
|
action = ActionChains(driver);
|
||||||
points = bspline(gcv(p1,p2,5), degree=3, n=n)
|
points = bspline(gcv(p1,p2,12), degree=5, n=n)
|
||||||
|
print(points)
|
||||||
for point in points:
|
for point in points:
|
||||||
action.move_to_element(point[0],point[1]);
|
if point[0] < 0 or point[1] < 0:
|
||||||
|
continue
|
||||||
|
print(point[0],point[1])
|
||||||
|
action.move_by_offset(int(point[0]),int(point[1]));
|
||||||
action.perform();
|
action.perform();
|
||||||
sleep(time/(1000*n))
|
time.sleep(time_/(1000*n))
|
||||||
if click:
|
if click:
|
||||||
action.click()
|
action.click()
|
||||||
|
|
||||||
|
@ -135,11 +140,14 @@ def get_loc(e):
|
||||||
def getSession(user, password, url="https://accounts.ft.com/login"):
|
def getSession(user, password, url="https://accounts.ft.com/login"):
|
||||||
#selenium
|
#selenium
|
||||||
driver = selenium.webdriver.Chrome()
|
driver = selenium.webdriver.Chrome()
|
||||||
|
driver.set_window_position(0, 0)
|
||||||
|
driver.set_window_size(3840, 1920)
|
||||||
driver.get(url)
|
driver.get(url)
|
||||||
|
|
||||||
email = driver.find_element_by_id("enter-email")
|
email = driver.find_element_by_id("enter-email")
|
||||||
pos1 = get_loc(email)
|
pos1 = get_loc(email)
|
||||||
move_mouse((128.3, 345.2),pos1,driver, n=200)
|
print(pos1)
|
||||||
|
move_mouse((123.3, 334.2),pos1,driver, n=200)
|
||||||
email.send_keys(user)
|
email.send_keys(user)
|
||||||
|
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
|
@ -43,6 +43,18 @@ def bspline(cv, n=100, degree=3, periodic=False):
|
||||||
# Calculate result
|
# Calculate result
|
||||||
return np.array(si.splev(u, (kv,cv.T,degree))).T
|
return np.array(si.splev(u, (kv,cv.T,degree))).T
|
||||||
|
|
||||||
|
#a_d = dist.euclidean(cv[0],v[0])
|
||||||
|
#b_d = dist.euclidean(v[-1],cv[-1])
|
||||||
|
|
||||||
|
#a = np.array(list(zip(
|
||||||
|
# np.linspace(cv[0][0],v[0][0],a_d*2),
|
||||||
|
# np.linspace(cv[0][1],v[0][1],a_d*2))))
|
||||||
|
|
||||||
|
#b = np.array(list(zip(
|
||||||
|
# np.linspace(v[-1][0],cv[-1][0],b_d*2),
|
||||||
|
# np.linspace(v[-1][1],cv[-1][1],b_d*2))))
|
||||||
|
#return np.concatenate(a,v,b)
|
||||||
|
|
||||||
|
|
||||||
def gcv(p1,p2, n):
|
def gcv(p1,p2, n):
|
||||||
d = distance.euclidean(p1,p2)
|
d = distance.euclidean(p1,p2)
|
||||||
|
@ -53,5 +65,5 @@ def gcv(p1,p2, n):
|
||||||
r_ = np.random.random_sample((n-2,))
|
r_ = np.random.random_sample((n-2,))
|
||||||
s = np.array(list(zip(x_lst + d *(r_-0.5),y_lst + d *(r-0.5))))
|
s = np.array(list(zip(x_lst + d *(r_-0.5),y_lst + d *(r-0.5))))
|
||||||
b = np.concatenate((np.array([[p1[0],p1[1]]]),np.concatenate((s,np.array([[p2[0],p2[1]]])))))
|
b = np.concatenate((np.array([[p1[0],p1[1]]]),np.concatenate((s,np.array([[p2[0],p2[1]]])))))
|
||||||
return s
|
return b
|
||||||
|
|
Loading…
Reference in a new issue