使用背景
最近使用selenium测试网站功能,我的环境是mac电脑、python版本是python2.7. selenium使用google的webdirver。这里记录在过程中遇到的两个问题。
1、select 选择options的问题。
2、input框上传附件失败的问题。
环境准备
1、webdriver 为google浏览器。注意需要选用与电脑中浏览器对应的版本。
查看本机电脑对应的版本:点击查看
google各版本的下载地址:点击下载
2、将webdirver 放入环境变量中。
image image image一、解决select 选择options的问题
from selenium.webdriver.support.select import Select
class Test():
def setup_method(self, method):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(10)
self.vars = {}
def teardown_method(self, method):
self.driver.quit()
def selectById(self, id_name, index=1):
obj = self.driver.find_element(By.ID, id_name)
time.sleep(0.5)
Select(obj).select_by_index(index)
方法selectById 为封装好的select选择器。id_name为css中元素的id名称,index为select下options的索引,从1开始。time.sleep(0.5)是因为option是通过ajax动态获取的,所以需要等待一下网络请求成功。
image二、文件上传的问题
需要先注入一段js代码防止点击后弹出文件窗口,然后将文件路径写入到input元素中。需要注意的是,我在mac上,提示只能用google chrome的webdriver才能上传文件,火狐不能支持。
image示例代码如下:
self.driver.execute_script("""
document.addEventListener('click', function(evt) {
if (evt.target.type === 'file')
evt.preventDefault();
}, true)
""")
self.driver.find_element(By.CSS_SELECTOR, ".btn:nth-child(2)").click()
file_path = u"/Users/vincent/Desktop/测试.docx"
self.driver.find_element(By.CSS_SELECTOR, "#jbox-content #uploadFile").send_keys(file_path)
self.driver.find_element(By.CSS_SELECTOR, "#jbox-content #btnImportSubmit").click()
总结
其实也算不上是自动化测试,只是为了替自己简化一些工作任务,大多数操作使用selenium IDE 插件录制然后稍微修改一下即可使用。
网友评论