selenium初次应用体验
来源:互联网 发布:淘宝16年售假处罚降权 编辑:程序博客网 时间:2024/06/05 00:08
selenuim是个自动化测试的库,以前简单的看过,但当时没有应用的需求,所以就放在那。
近日,单位要求我们为一批人在网上注册和报名,而且要填写的信息的确很多(这些信息都是在电子表格文件中),刚一开始,他们说直接从电子表格中一个个复制并粘贴到网页中就可以了。我去……,这么多,一个个复制还要盯准行和列,那要做到什么时候T-T?
想着复制、粘贴功能,问了度娘,马上有了结果。pywin库中可以实现将数据写入剪贴板的功能,安装测试。真的很爽,直接用xlrd库从Excel表中读取数据,在终端中每回车一次,就自动复制一次所需要信息到剪贴板,然后在网页中直接粘贴,也算省了不了眼力。就这样干了半天,一看,T—T,还有这么多。我不干心啊……
代码是这样的:
import win32clipboard as wdef set_clip(data): w.OpenClipboard() w.EmptyClipboard() w.SetClipboardText(data) w.CloseClipboard()for row in datas: for data in row: set_clip(data) c = input() if c == q: break
于是,走了这段弯路之后,想到了selenium。简单地参考了下网上的教程,写出类似似这样的代码。
for row in data_rows: datas = [row[2],row[7],row[5],'2016',row[6],'234300'] br.get("http://...") br.find_element_by_name('...').send_keys(row[2]) ....这下总算又省了不少力,可是有五、六个下拉列表框还是要一个个点选;我又是一通乱点...鸳鸯,干掉了不少工作……
selenium也是可以通过点击来选择下列列表中的数据啊?省力最重要,打开网页,定位并检查元素,发现网页代码中根本不是直接用的select标签来实现的,而是通过easyui来生成的。通过一番试验,写出了这样的代码:
selectors = br.find_elements_by_css_selector("a.textbox-icon") select_option_ids = ['_easyui_combobox_i1_2','_easyui_combobox_i2_0', '_easyui_combobox_i6_1','_easyui_combobox_i3_2', '_easyui_combobox_i4_12','_easyui_combobox_i5_4' ] for slt,slt_id in zip(selectors,select_option_ids): slt.click() br.find_element_by_id(slt_id).click()总算省了点击,可以轻松的完成工作了。
最后总结两点:
1.br.find_element_by_partial_link_text()
注:因为网页界面应用了JS的库所以有的按钮本质是链接,而其中包含很多其他元素。
2.因为网页中加载的速度有时慢,而有的元素没有加载好,点击是不起作用的。所以我使用了类似这样的代码(点击“确认”之后,弹出对话框,再点击“确定”。而有时“确认”按钮没有加载好,点击不起作用,‘确定’按钮也不会出现。):
for i in range(50): flag = True try: br.find_element_by_partial_link_text('确定').click() except: flag = False print('sleep') time.sleep(1) br.find_element_by_partial_link_text('确认').click() time.sleep(0.5) if flag: break
0 0
- selenium初次应用体验
- 初次体验
- 初次体验
- 初次体验
- 初次体验BT
- 初次体验NHibernate
- 初次体验linux
- Windows7初次安装体验
- 初次进入CSDN体验
- Android 初次体验
- 初次体验monodroid
- 初次体验monodroid
- 初次体验hiphop-php
- 指针初次体验
- 数据挖掘初次体验
- POSTGRESQL 分区表初次体验
- fedora 初次体验
- [生活]SAE初次体验
- servlet genericservlet httpservlet
- Textview超链接
- DTD中的实体Entity
- [iOS] UIBezierPath贝塞尔曲线常用方法
- 125个优化网站可用性的小点子(上)
- selenium初次应用体验
- org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actua
- 2016专题训练II-黄华 多线程打印管理器
- 125个优化网站可用性的小点子(下)
- iOS 开发者中的公司账号与个人账号之间有什么区别?
- 守护进程
- 关于利用死锁定理关于化简资源分配图(RAG)算法中“两不点”备忘
- FloodFill(洪水填充 )算法
- 【POJ2777】Count Color-线段树区间更新