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
原创粉丝点击