Python+selenium定位已打开的浏览器

Python+selenium定位已打开的浏览器

在我们使用python+selenium+webdriver自动化使用谷歌账号登录浏览器的时候,会出现如下情况

谷歌账号检测无法登陆

点击了解详情,我们发现有这四点原因:

  • 不支持 JavaScript 或者已关闭 JavaScript

  • 添加了不安全或不受支持的扩展程序

  • 通过软件自动控制,而非人工控制

  • 嵌入在其他应用中

了解详情

原因分析:

通过百度等搜索出现该问题的原因,众说纷纭,我也根据相关的文章改了相应的地方

1.javaScript这个,更改之后,依旧无效

2.扩展插件,我谷歌浏览器新装的,无任何插件和扩展程序

3.我确实使用了自动化控制

4.没有嵌套,直接访问的谷歌进行登录

综上分析和相关实践得出结论,谷歌账户在登录时会去检测你当前的行为是否是自动化,若检测成功则阻止你登录,而且账户目前我发现是某几个账户就会阻止,有的账户不会阻止,这点很迷

进一步分析,谷歌是如何检测我是否为自动化,这里一顿胡乱操作发现,谷歌是通过webdrive协议监控到的。

那么,我该如何阻止它呢?中间过程不细说,试了非常多的方法,目前总结了两种。

1.使用selenium gird,结合selenium1.0版本,直接通过jar包启动连接浏览器,这方法的缺点就是,selenium1.0的功能无法满足我做项目的要求

2.我是否可以手动开启一个本地浏览器,自己登录账号,之后再通过selenium定位到我这个浏览器,再通过webdriver去实现自动化呢?我发现,这个确实可以,缺点:需要自己通过命令启动浏览器

方法一暂不介绍,十年前的技术

此处介绍方法二:

方法二借鉴了该作者的博客指点:

参考链接:https://blog.csdn.net/a1sd1/article/details/96110865

我们可以利用Chrome DevTools协议。它允许客户检查和调试Chrome浏览器。

打开cmd,在命令行中输入命令:(需要将你谷歌浏览器的安装目录配置到环境变量中)

chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenium\AutomationProfile"

-remote-debugging-port值,可以指定任何打开的端口。

-user-data-dir标记,指定创建新Chrome配置文件的目录。它是为了确保在单独的配置文件中启动chrome,不会污染你的默认配置文件。

C:\selenium\AutomationProfile 这个文件夹是我手动在C盘下创建的,你们也可以改为别的。

注意:不要忘了在环境变量中PATH里将chrome的路径添加进去。(其实也可以不配置,直接定位到chrome的安装路径找到chrome.exe文件 就可以使用)

此时会打开一个浏览器页面,我们输入谷歌登录网址,我们把它当成一个已存在的浏览器:

此时你去手动登录谷歌账号,便会发现之前自动化登录不了的,这时候可以登录了,而且登录之后,以后都不需要登录,它会把你这次登录的信息记入到C:\selenium\AutomationProfile 下

后面你只需要python+selenium+webdriver定位到这个已经登录的浏览器进行操作就可以啦。

现在,我们需要接管上面的浏览器。新建一个python文件,运行以下代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
chrome_driver = "./chromedriver.exe" #我是把chromedriver驱动放在项目根目录下
driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)

#driver.get(url) #这一句不需要加

这是登录后的标识,之后该浏览器就可以正常去执行你的自动化脚本啦。

欢迎关注我的微信公众号:
梦无矶的测试开发之路

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值