怎样使用Python调用我们平时使用的chrome浏览器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样使用Python调用我们平时使用的chrome浏览器相关的知识,希望对你有一定的参考价值。

在Mac系统上执行,Python脚本要如何写?chromedrive调用平时使用的chrome,而不是一个非常干净的chrome?

import unittest,os,time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

dictInput = 

class Test(unittest.TestCase):
    def setUp(self):
        self.chromedriver = "C:\\Users\\xxx\\AppData\\Local\\Google\\Chrome\\Application\\chromedriver.exe" # 将chromedriver.exe拷贝到你想要调用的chrome安装路径下即可
        os.environ["webdriver.chrome.driver"] = self.chromedriver
        self.browser = webdriver.Chrome(self.chromedriver)
    def test(self):
        self.browser.get('xxxx')#此处xxxx为网页的url
if __name__ == '__main__':
    import sys;sys.argv = ['', 
                             'Test.test'
                               ]
    unittest.main()

追问

你这个是windows系统上执行的代码,而且调用出来的页面也是一个非常干净的chrome;现象:本机的chrome 是安装了插件的,但调出来的chrome就是没有插件的。

追答

chrome是可以设置启动参数的,只有看看selenium的源码了,是不是可以改

参考技术A os.system直接调用不就行了

对于使用 Python 的 Selenium,我怎样才能让它按 CTRL、SHIFT、i?

【中文标题】对于使用 Python 的 Selenium,我怎样才能让它按 CTRL、SHIFT、i?【英文标题】:For Selenium with Python, how can i get it to press CTRL, SHIFT, i? 【发布时间】:2020-01-21 21:22:37 【问题描述】:

我刚开始学习 Python 课程,这是我第一次接触编程,除了一点 HTML。我正在尝试为 Instagram 编写脚本,并希望能够将 Chrome 浏览器放入移动视图。所以我的想法是打开开发者工具(CTRL+SHIFT+i)然后打开移动端(CTRL+SHIFT+m)我怎样才能让 Selenium 用 Python 代码做到这一点?

String selectAll = Keys.chord(Keys.ALT, Keys.SHIFT,"z");


driver.findElement(By.tagName("html")).sendKeys(selectAll);

我试图修改它以使其工作,但它没有。我需要导入一些东西才能使上面的块工作吗?

这是我拥有的代码,并且正在尝试在现有代码运行后进入移动模式。

from time import sleep
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains

#mobile_emulation =  "deviceName": "iPhone 4" 

#chrome_options = webdriver.ChromeOptions()

#chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)

#driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',

                          #desired_capabilities = chrome_options.to_capabilities())

class InstaBot:
    def __init__(self,username,pw,):
        self.driver = webdriver.Chrome()
        self.username = username
        self.driver.get('https://instagram.com')
        sleep(2)
        self.driver.find_element_by_xpath("//a[contains(text(), 'Log in')]")\
            .click()
        sleep(2)
        self.driver.find_element_by_xpath("//input[@name=\"username\"]")\
            .send_keys(username)
        self.driver.find_element_by_xpath("//input[@name=\"password\"]")\
            .send_keys(pw)
        self.driver.find_element_by_xpath('//button[@type="submit"]')\
            .click()
        sleep(4)
        self.driver.find_element_by_xpath("//button[contains(text(), 'Not Now')]")\
            .click()
        sleep(4)

my_bot = InstaBot('username', 'password')

actions = ActionChains(driver)
actions.send_keys(Keys.CTRL, Keys.SHIFT, "i")
actions.perform()```


【问题讨论】:

查看this answer,了解如何使用 chrome 驱动程序模拟移动设备 【参考方案1】:

请尝试使用ActionChains发送密钥

self.driver = webdriver.Chrome(executable_path=r"C:\path\to\chromedriver.exe")

actions = ActionChains(self.driver) 
    actions.send_keys(Keys.CTRL, Keys.SHIFT, "i")
    actions.perform()

进口将是

from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.action_chains import ActionChains

【讨论】:

感谢您的回复。我必须导入一些东西才能让它工作吗?我试图添加这段代码,我得到一个回溯说“NameError: name 'ActionChains' is not defined” 再次感谢。我现在收到此错误。 "actions = ActionChains(driver) NameError: name 'driver' is not defined" 你设置webdriver驱动实例了吗?为此,您需要导入驱动程序 这些是我包含的导入from selenium import webdriver from time import sleep from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains 根据您的问题更新答案【参考方案2】:

Keys 看起来有点老套。

请试试这个:

from selenium import webdriver
mobile_emulation =  "deviceName": "Nexus 5" 
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
                          desired_capabilities = chrome_options.to_capabilities())

参考:https://chromedriver.chromium.org/mobile-emulation

【讨论】:

谢谢您的建议。我是否需要在移动模式下运行整个脚本才能工作,或者我可以打开 Instagram,以桌面格式登录,然后使用此代码更改为移动仿真模式? 我不确定,但我认为您可以定义两个驱动程序,具体取决于您使用台式机或移动设备的需要。

以上是关于怎样使用Python调用我们平时使用的chrome浏览器的主要内容,如果未能解决你的问题,请参考以下文章

python selenium 调用Chrome,提示不安全的data和您使用的是不支持命令行标记

[Python3网络爬虫开发实战] 1.2.3-ChromeDriver的安装

琉璃小屋-用python调用Chrome浏览器报错

html5怎样调用手机摄像头或者相册?

怎样用python调用dll

chrome代理配置插件siwtchyOmega