selenium初次应用体验

selenuim是个自动化测试的库,以前简单的看过,但当时没有应用的需求,所以就放在那。

近日,单位要求我们为一批人在网上注册和报名,而且要填写的信息的确很多(这些信息都是在电子表格文件中),刚一开始,他们说直接从电子表格中一个个复制并粘贴到网页中就可以了。我去……,这么多,一个个复制还要盯准行和列,那要做到什么时候T-T?

想着复制、粘贴功能,问了度娘,马上有了结果。pywin库中可以实现将数据写入剪贴板的功能,安装测试。真的很爽,直接用xlrd库从Excel表中读取数据,在终端中每回车一次,就自动复制一次所需要信息到剪贴板,然后在网页中直接粘贴,也算省了不了眼力。就这样干了半天,一看,T—T,还有这么多。我不干心啊……

代码是这样的:

import win32clipboard as w
def 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值