python滚动条_一python之新开窗口、滚动条

一、新开一个窗口,并输入urL,只适用于两个窗口;目录:common-basepage

二、滚动元素可见;使用js语句:arguments[0].scrollIntoView();将元素滚动到最上方使得元素可见,但因为系统最上面有固定的主菜单栏会遮挡住元素,经过调试,可以先将元素滚动到可见,再相对当前位置滚动一定距离(window.scrollBy(x,y),相对滚动,相比较当前位置的滚动,x指左右滚动多少,y指上下滚动多少,朝上滚动为负数,朝下为正数),使得元素肉眼可见;经过调试,相对朝下移动100,可使得元素恰好不被菜单栏遮挡;

代码:

#滚动到元素可见

def page_scroll(self,loc,img_doc): #loc元素定位,本人用xpath定位

try:

element = self.get_element(loc,img_doc) #element 查找元素,get_element为自定义函数

self.driver.execute_script("""arguments[0].scrollIntoView();window.scrollBy(0,-100);""",element) #scrollIntoViewIfNeeded ,scrollIntoView ,window.scrollBy(0,-200);

# self.driver.execute_script("arguments[0].scrollTop=80",element)

# self.driver.execute_script("window.scrollBy(0,-70);") #window.scrollBy(x,y),相对滚动,相比较当前位置的滚动,x指左右滚动多少,y指上下滚动多少,

# 朝上滚动为负数,朝下为正数

except:

logging.exception("滚动元素{}至最顶端页面失败!".format(img_doc))

else:

logging.exception("滚动元素{}至最顶端页面成功!".format(img_doc))

调用此函数后,使得元素可见后,对元素进行点击,依然失败;经过测试,发现只有等待元素存在后再点击才行;故定义四个函数用于点击操作;一为等待元素可见,;二为等待元素可见后再去点击,三为等待元素存在,四为等待元素存在时再去点击;元素其他操作同理;

小case:

1.1 id为滚动条id,操作滚动条滚动;0为滚动到顶部,10000为滚动到最底部

js="var q=document.getElementById('id').scrollTop=10000"

driver.execute_script(js)

1.2 相对位置滚动:window.scrollBy(x,y),相对滚动,相比较当前位置的滚动,x指左右滚动多少,y指上下滚动多少,朝上滚动为负数,朝下为正数;最大可设为10000,最小为0

1.3 相对位置滚动2:

js = "var q=document.documentElement.scrollTop=10000"

driver.execute_script(js)

sleep(3)

#滚动左右滚动条---向右

js2 = "var q=document.documentElement.scrollLeft=10000"

driver.execute_script(js2)

sleep(3)

#滚动左右滚动条---向左

js3 = "var q=document.documentElement.scrollLeft=0"

driver.execute_script(js3)

三、通过js修改相应属性,修改参数,便于自动化操作

from selenium import webdriver

driver = webdriver.Chrome()

date = "2019-07-11"

js = """

var a = document.getElementById("train_date");

a.readOnly=false;

a.value = arguments[0];

"""

driver.execute_script(js,date) #arguments[0]....[n] 可分别接收参数*arge,如:arguments[0]对应参数date

#修改readOnly为false,使得value可修改,并注入date

你可能感兴趣的:(python滚动条)