环境信息: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 -p -u ')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('test.py -m -p -u ')
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:])