python+seleium实现了一个小功能,记录几个小坑解决方法

环境信息:windows10,python3,chrome

1、seleium调用send_keys的时候会丢字符

丢字符:

pwd = '111111'
driver.find_element_by_id('password').send_keys(pwd)

修改为逐字传入:

pwd='111111'
for i in range(0, len(pwd)):
    driver.find_element_by_id('password').send_keys(pwd[i])

2、元素信息正确,但find不到元素

切换frame,当前页面只有一个frame,一开始没有考虑是frame的问题。但操作过程是由登录页跳转到了当前页,switch一下frame后正确找到了元素。切换frame前最好加个延时,以防找不到(未加延时84版本正常,62版本找不到frame)

time.sleep(2)
#driver.switch_to.frame(0) # 按照层级切换
driver.switch_to.frame('cntWin') # 按id切换

3、无法find隐藏元素,导致操作失败

先用js把隐藏元素设置为显示,再正常操作

js = "document.getElementsByClassName('classname')[0].style.display='inline'" #[0]因为我的元素的是个列表
driver.execute_script(js)

4、打包成exe

pip install pyinstaller

pyinstaller -F frozenOrgMember.py
生成的exe和对应执行机器chrome版本的chromedriver放到同级目录就可以在任意机器执行了

5、通过传参执行脚本

def test(argv):
    # 默认值,不传参时使用
    mobile = '18000000000'
    pwd = '111111'
    url = 'http://test.org'
    try:
        opts, args = getopt.getopt(argv, "hm:p:u:", ["mobile", "pwd", "url"])
    except getopt.GetoptError:
        print('test.py -m <mobile> -p <pwd> -u <url>')
        sys.exit(2)
    for opt, arg in opts:
        if opt == '-h':
            print('test.py -m <mobile> -p <pwd> -u <url>')
            sys.exit()
        elif opt in ("-m", "--mobile"):
            manager = arg
        elif opt in ("-p", "--pwd"):
            pwd = arg
        elif opt in ("-u", "--url"):
            url = arg

if __name__ == "__main__":
    test(sys.argv[1:])

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值