莫愁前路无知己,天下谁人不识君。。。。

pythen+selenium精华知识之三-----滚动条(注意第四点)

上一篇 / 下一篇  2017-10-23 18:45:58 / 个人分类:python知识精髓

常用的做法
# coding:utf-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com")
print driver.name
# 回到顶部(方法一)
def scroll_top():
    if driver.name == "chrome":
js = "var q=document.body.scrollTop=0"
    else:
js = "var q=document.documentElement.scrollTop=0"
return driver.execute_script(js)
# 拉到底部
def scroll_foot():
    if driver.name == "chrome":
js = "var q=document.body.scrollTop=10000"
    else:
js = "var q=document.documentElement.scrollTop=10000"
return driver.execute_script(js)
# 聚焦元素(方法二)
target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)
# 模拟鼠标拖动
from selenium.webdriver.common.action_chains import ActionChains
element=driver.find_element_by_xxxx()
target=driver.find_element_by_xxxx1()
ActionChains(driver).drag_and_drop(element, target).perform()
#很特殊,很特殊的调用滚动条(databody)有子窗体有id时
js=$("#planninOutSourceMaintainDialog .datagrid-body").scrollLeft($("#planninOutSourceMaintainDialog .datagrid-body").offset().left +$("#planninOutSourceMaintainDialog .datagrid-body table tr td").eq(21).offset().left - 57) #此部分:eg(21)是需要定位到可见元素的索引,jquery的eq()功能,遍历索引,57是相对与前面的偏移量,planninOutSourceMaintainDialog这个定位滚动条右键复制xpath时,语句中有个id=planninOutSourceMaintainDialog,其次datagrid-body是classname。
driver.excute_script(js) 
注:主要是滚动条位置不固定,由几个表组成,比较复杂。用前三个方法只能移动一半,后来问开发,商讨很久才试出来。。。
有或无子窗体时:
js2 = $(".datagrid-view2 .datagrid-body").scrollLeft($(".datagrid-view2 .datagrid-
body").offset().left + $(".datagrid-view2 .datagrid-body table tr td").eq(5).offset().left - 10)
说明:(.datagrid-view2唯一时)可以用上面定位
也可以这样:
js2 = $(".datagrid-view2 .datagrid-body").scrollLeft($(".datagrid-view2 .datagrid-body table tr td").eq(5).offset().left - 10)#####去掉中间一部分也可以
使用以上功能的前提是当前body下有数据,及查询后有数据展示
还可以这样:
js1='$("#planninOutSourceMaintainDialog .datagrid-body").scrollLeft(900)  # F12调试出大致为位置(有无数据展示都可以
若要滚动条回到原位:
js1='$("#planninOutSourceMaintainDialog .datagrid-body").scrollLeft(0)'
driver.execute_script(js1)
垂直滚动条:
is='$("#bodyLayout .datagrid-body").scrollTop($("#bodyLayout .datagrid-body").offset().top + $("#bodyLayout .datagrid-body table tr td").eq(10).offset().top)' -----OK
下面这种方法:千万不要用。。。。。。。
#通过按向下键将页面滚动条拖到底部    
driver.find_element_by_xpath("//*[@id='wrapper_wrapper']").send_keys(Keys.DOWN)    
time.sleep(1)    
driver.find_element_by_xpath("//*[@id='wrapper_wrapper']").send_keys(Keys.DOWN)    
time.sleep(1)

TAG: Python Selenium

 

评分:0

我来说两句

Open Toolbar