selenium实现chrome多开

有时候为了避开登录验证所带来的麻烦,先登录后用selenium预加载之前的用户配置及cookie信息会极大便利自动化目标的实现,但受限于selenium及chrome的用户配置文件加锁机制,每次只能有一个进程操作大大限制了自动化目标的实施。所幸可以通过chrome的多用户可以完成selenium多任务同时加载cookie信息

1、添加多个chrome用户
2、分别用不同chrome用户访问 chrome://version/,找到对应的 个人资料路径 一般新开的会将Default延伸为Profile 1~
3、声明用户配置信息路径及资料名称:
option.add_argument(‘–user-data-dir=C:\Users\Administrator\AppData\Local\Google\Chrome\User Data’)
option.add_argument(‘–profile-directory=Profile 1’)

参考资料:

https://stackoverflow.com/questions/50635087/how-to-open-a-chrome-profile-through-user-data-dir-argument-of-selenium

selenium利用send_keys()一次性上传多个文件

奈何中文资料太少,google了下使用selenium中send_keys()一次性上传多个文件的解决方案:driver.find_element_by_xpath(“file_path1\nfile_path2”)

中间加 \n 即可

注意:结尾不能有\n否则会报错,调了好久才发现这个坑

参考资料:https://stackoverflow.com/questions/23955430/selenium-webdriver-upload-multiple-files

另外三种其他方案一并推荐:
https://tuyennta.com/upload-multiple-files-in-selenium/

selenium文件上传,成功后文件选择框未自动关闭

在使用selenium自动上传文件成功后,总是出现浏览器关闭后文件选择框却仍停留在桌面上,尤其是进程执行数次后会有一堆这样的框框保留在桌面上,网上搜索了很久没找到原因和解决方案,百思不得琪姐。

琪姐告诉我:画蛇添足!
selenium上传文件直接对input进行send_keys()而不需要想浏览器一样先点击再选文件,错就错在代码层面还添加了一次点击,导致有多余的选择文件弹框出现,删足即可~

selenium xpath路径写对,但找不到元素

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {\”method\”:\”xpath\”,\”selector\”:\”//*[@id=\”js_msgSender\”]/a\”}

确认过xpath表达式正确无误时selenium仍然找不到元素时一般很有可能是前面使用过.click()方法,浏览器会新开一个tab,然而当前selenium焦点仍然保留在原有页面tab当中

因此只要在.click()操作后加一行:
driver.switch_to_new_tab()
焦点跳转到新tab就ok

这种错误尤其在命令行执行时会爆出,IDE调试测试阶段会有可视化浏览器实际操作,不容易暴露。命令行下不会有可视化浏览器操作,错误就产生了