1、滚动条处理
# 移动到元素ele对象的"底端"与当前窗口的"底部"对齐
driver.execute_script('arguments[0].scrollIntoView();',ele)
# 移动到元素ele对象的"顶端"与当前窗口的"顶部"对齐
driver.execute_script('arguments[0].scrollIntoView(false);',ele)
# # 移动到页面底部
driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# # 移动到页面顶部
driver.execute_script('window.scrollTo(document.body.scrollHeight,0)')
代码实现滚动条操作:
1 from selenium import webdriver 2 from selenium.webdriver.common.keys import Keys 3 from selenium.webdriver.support.wait import WebDriverWait 4 from selenium.webdriver.support import expected_conditions as EC 5 from selenium.webdriver.common.by import By 6 driver=webdriver.Chrome() 7 driver.maximize_window() 8 driver.get('https://wwww.baidu.com') 9 driver.find_element_by_id('kw').send_keys("柠檬班",Keys.ENTER) 10 WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,"//a[text()=' - 主页']"))) 11 # 1、找到需要定位的元素 12 ele=driver.find_element_by_xpath("//a[text()=' - 主页']") 13 # 2、移动到元素ele对象的"底端"与当前窗口的"底部"对齐 14 driver.execute_script('arguments[0].scrollIntoView();',ele)
2、js操作元素属性
web自动化测试中,当遇到不能直接输入的输入框时(比如,元素属性中有readonly属性),需要使用js改变元素的属性,使得输入框可以输入信息
代码操作如下:
1 import time 2 from selenium import webdriver 3 from selenium.webdriver.common.action_chains import ActionChains 4 from selenium.webdriver.support.wait import WebDriverWait 5 from selenium.webdriver.support import expected_conditions as EC 6 from selenium.webdriver.common.by import By 7 driver=webdriver.Chrome() 8 driver.maximize_window() 9 driver.get('https://www.12306.cn/index/') 10 11 # 获取出发地元素 12 start_site=driver.find_element_by_id("fromStation") 13 start_site_text=driver.find_element_by_id("fromStationText") 14 15 # 设置出发地信息(使用web查找元素的方式,在进行js操作),如果使用xpath定位元素的情况只能用这种方法,不能直接使用js语句 16 driver.execute_script("var start=arguments[0];var start_text=arguments[1];start.value='ZZF';start_text.value='郑州';",start_site,start_site_text) 17 18 # 设置目的地信息(使用js操作) 19 js='var to_site=document.getElementById("toStation");to_site.value="HZH";to_site_text=document.getElementById("toStationText");to_site_text.value="杭州";' 20 # 执行js语句 21 driver.execute_script(js) 22 23 # 设置出发日期 24 js='var start_time=document.getElementById("train_date");start_time.readOnly=false;start_time.value="2020-04-16";' 25 driver.execute_script(js) 26 27 # 获取查询按钮元素并点击 28 driver.find_element_by_id("search_one").click() 29 time.sleep(0.5) 30 # 获取句柄 31 handles=driver.window_handles 32 driver.switch_to.window(handles[-1]) 33 time.sleep(0.5) 34 # 定位查找到的元素 35 WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH,'//a[@class="menu-nav-hd"]'))) 36 ele=driver.find_element_by_xpath('//a[@class="menu-nav-hd"]') 37 # 实例化ActionChains 38 ac=ActionChains(driver) 39 ac.move_to_element(ele) 40 ac.perform() 41 time.sleep(2) 42 driver.quit()