selenium—处理日历选择控件&异常处理
2019-07-25 本文已影响0人
小二哥很二
一、对于UI自动化时,页面需要选择,或者有下拉框选择,无法输入时候,可以更改页面的属性。以12306为例,删除readonly属性就可以: 4.png
这时候就可以去输入而不是选择了。当然,在编写脚本时,需要执行js语句来删除该属性:
js=document.getElementById("train_date").removeAttribute("readonly");
driver.execute_script(js)
然后再定位的文本框,一定要先清空,再输入,注意输入的格式:
driver.find_element_by_id('train_date').clear()
driver.find_element_by_id('train_date').send_keys('2019-12-12')
或者用js方法输入
js=document.getElementById("train_date").value="2019-12-12";
driver.execute_script(js)
-----------------------------------------------------------------------
二、滚动条处理
纵向滚动条底部:
js=document.getElementById("xxxx").scrollTop=10000;
纵向滚动条顶部:
js=document.getElementById("xxxx").scrollTop=0;
横向滚动条右侧:
js=document.getElementById("xxxx").scrollLeft=10000;
横向滚动条左侧:
js=document.getElementById("xxxx").scrollLeft=0;
-----------------------------------------------------------------------
三、异常处理
1.异常概述:调试程序时经常会报出一些异常,这时就需要我们对异常进行捕获处理,防止程序终止。
2.引入原因:代码出错时由于不能执行到driver.quit,需要手动关闭浏览器,其实还需要关闭chromedriver进程,否则进程不会自动退出
3.导致结果:执行大量的自动化用例就会使大量的chromedriver进程没有退出导致内存占用,机器会变卡
import traceback
from selenium import webdriver
options=webdriver.ChromeOptions()
options.add_argument('--headless')
driver=webdriver.Chrome(options=options)
try:
driver.get('https://www.baidu.com/')
driver.find_element_by_id('kk').send_keys('python')
except:
print(traceback.format_exc())
finally:
driver.quit()
四、指定浏览器位置
对于浏览器不是默认安装的,selenium在执行的时候会默认启动浏览器的默认安装位置,此时就会报错。解决办法:
from selenium import webdriver
import time
from selenium.webdriver.chrome.options import Options
op = Options()
op.binary_location = r"D:\Google\Chrome\Application\chrome.exe"
dr = webdriver.Chrome(chrome_options=op)
dr.implicitly_wait(3)
dr.get('https://www.baidu.com/')
time.sleep(3)
dr.close()
PS:觉得这篇文章有用的朋友,多多点赞打赏哦~!