一、新开一个窗口,并输入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