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

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

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

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

image.png

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

  • 不支持 JavaScript 或者已关闭 JavaScript
  • 添加了不安全或不受支持的扩展程序
  • 通过软件自动控制,而非人工控
  • 嵌入在其他应用中

image.png

原因分析:


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


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,在命令行中输入命令:(需要将你谷歌浏览器的安装目录配置到环境变量中)


image.png

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) #这一句不需要加

image.png

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

相关文章
|
29天前
|
Web App开发 Python
在ModelScope中,你可以使用Python的浏览器自动化库
在ModelScope中,你可以使用Python的浏览器自动化库
16 2
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程)
【2月更文挑战第13天】《手把手教你》系列基础篇之(四)-java+ selenium自动化测试- 启动三大浏览器(下)基于Maven(详细教程) 上一篇文章,宏哥已经在搭建的java项目环境中实践了,今天就在基于maven项目的环境中给小伙伴们 或者童鞋们演示一下。
66 1
|
1月前
|
Web App开发 Java 测试技术
《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)
【2月更文挑战第12天】《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程) 前边宏哥已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动三大浏览器。按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome。因此宏哥这里主要介绍一下如何启动这三大浏览器即可,其他浏览器类似的方法,照猫画虎就可以了。
42 1
|
2天前
|
前端开发 测试技术 C++
Python自动化测试面试:unittest、pytest与Selenium详解
【4月更文挑战第19天】本文聚焦Python自动化测试面试,重点讨论unittest、pytest和Selenium三大框架。unittest涉及断言、TestSuite和覆盖率报告;易错点包括测试代码冗余和异常处理。pytest涵盖fixtures、参数化测试和插件系统,要注意避免过度依赖unittest特性。Selenium的核心是WebDriver操作、等待策略和测试报告生成,强调智能等待和元素定位策略。掌握这些关键点将有助于提升面试表现。
14 0
|
8天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
33 0
|
11天前
|
Web App开发 测试技术 网络安全
|
1月前
|
Web App开发 前端开发 JavaScript
Python Selenium是一个强大的自动化测试工具
Python Selenium是一个强大的自动化测试工具
|
1月前
|
Web App开发 数据可视化 测试技术
Selenium Headless模式:无头浏览器的使用与优势
Selenium Headless模式是无界面的自动化测试方式,适用于Chrome和Firefox等浏览器,提供更快的速度、更高的隐秘性和资源节省。在Python中启用该模式,需导入Options并设置相关参数。示例代码展示了如何在无头模式下访问网站、执行点击和输入操作。这种模式提升了测试效率和稳定性,尤其适合大规模测试和CI环境。
31 1
|
1月前
|
Web App开发 测试技术 Python
使用 Python 结合 Selenium 访问一个 url
使用 Python 结合 Selenium 访问一个 url
26 0
|
1月前
|
Web App开发 安全 定位技术
关于使用 Python 和 Selenium chrome driver 访问 url 时修改 source ip 的问题
关于使用 Python 和 Selenium chrome driver 访问 url 时修改 source ip 的问题
60 0

热门文章

最新文章