在Python中使用selenium自动化 Google meet
先决条件: Selenium Python基础知识、使用Selenium的浏览器自动化
Selenium是一个强大的工具,用于通过程序控制 Web 浏览器并执行浏览器自动化。它适用于所有浏览器,适用于所有主要操作系统,其脚本是用各种语言编写的,例如Python、 Java、C# 等,我们将使用Python。
Selenium可用于自动化 Web 浏览器。在本文中,我们将学习如何使用selenium在关闭摄像头和麦克风的情况下登录 Google 帐户并通过 Google meet 加入会议。
安装:
可以使用以下命令安装selenium模块:
pip install selenium
循序渐进的方法:
第 1 步:导入模块
Python3
# import required modules
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
Python3
# creating chrome instance
opt = Options()
opt.add_argument('--disable-blink-features=AutomationControlled')
opt.add_argument('--start-maximized')
opt.add_experimental_option("prefs", {
"profile.default_content_setting_values.media_stream_mic": 1,
"profile.default_content_setting_values.media_stream_camera": 1,
"profile.default_content_setting_values.geolocation": 0,
"profile.default_content_setting_values.notifications": 1
})
driver = webdriver.Chrome(options=opt)
Python3
# go to google meet
driver.get('https://meet.google.com/xby-zehb-ncf')
Python3
# explicit function to turn off mic and cam
def turnOffMicCam():
# turn off Microphone
time.sleep(2)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[1]/div/div/div').click()
driver.implicitly_wait(3000)
# turn off camera
time.sleep(1)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[2]/div/div').click()
driver.implicitly_wait(3000)
Python3
def AskToJoin():
# Ask to Join meet
time.sleep(5)
driver.implicitly_wait(2000)
driver.find_element_by_css_selector(
'div.uArJ5e.UQuaGc.Y5sE8d.uyXBBb.xKiqt').click()
# Ask to join and join now buttons have same xpaths
Python3
def Glogin(mail_address, password):
# Login Page
driver.get(
'https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/&ec=GAZAAQ')
# input Gmail
driver.find_element_by_id("identifierId").send_keys(mail_address)
driver.find_element_by_id("identifierNext").click()
driver.implicitly_wait(10)
# input Password
driver.find_element_by_xpath(
'//*[@id="password"]/div[1]/div/div[1]/input').send_keys(password)
driver.implicitly_wait(10)
driver.find_element_by_id("passwordNext").click()
driver.implicitly_wait(10)
# go to google home page
driver.get('https://google.com/')
driver.implicitly_wait(100)
Python3
# import required modules
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
def Glogin(mail_address, password):
# Login Page
driver.get(
'https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/&ec=GAZAAQ')
# input Gmail
driver.find_element_by_id("identifierId").send_keys(mail_address)
driver.find_element_by_id("identifierNext").click()
driver.implicitly_wait(10)
# input Password
driver.find_element_by_xpath(
'//*[@id="password"]/div[1]/div/div[1]/input').send_keys(password)
driver.implicitly_wait(10)
driver.find_element_by_id("passwordNext").click()
driver.implicitly_wait(10)
# go to google home page
driver.get('https://google.com/')
driver.implicitly_wait(100)
def turnOffMicCam():
# turn off Microphone
time.sleep(2)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[1]/div/div/div').click()
driver.implicitly_wait(3000)
# turn off camera
time.sleep(1)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[2]/div/div').click()
driver.implicitly_wait(3000)
def joinNow():
# Join meet
print(1)
time.sleep(5)
driver.implicitly_wait(2000)
driver.find_element_by_css_selector(
'div.uArJ5e.UQuaGc.Y5sE8d.uyXBBb.xKiqt').click()
print(1)
def AskToJoin():
# Ask to Join meet
time.sleep(5)
driver.implicitly_wait(2000)
driver.find_element_by_css_selector(
'div.uArJ5e.UQuaGc.Y5sE8d.uyXBBb.xKiqt').click()
# Ask to join and join now buttons have same xpaths
# assign email id and password
mail_address = 'emaild@gmail.com'
password = 'geeksforgeeks'
# create chrome instamce
opt = Options()
opt.add_argument('--disable-blink-features=AutomationControlled')
opt.add_argument('--start-maximized')
opt.add_experimental_option("prefs", {
"profile.default_content_setting_values.media_stream_mic": 1,
"profile.default_content_setting_values.media_stream_camera": 1,
"profile.default_content_setting_values.geolocation": 0,
"profile.default_content_setting_values.notifications": 1
})
driver = webdriver.Chrome(options=opt)
# login to Google account
Glogin(mail_address, password)
# go to google meet
driver.get('https://meet.google.com/xby-zehb-ncf')
turnOffMicCam()
# AskToJoin()
joinNow()
第 2 步:使用一些必需的先决条件 Chrome Options() 创建一个 Chrome 浏览器实例。
蟒蛇3
# creating chrome instance
opt = Options()
opt.add_argument('--disable-blink-features=AutomationControlled')
opt.add_argument('--start-maximized')
opt.add_experimental_option("prefs", {
"profile.default_content_setting_values.media_stream_mic": 1,
"profile.default_content_setting_values.media_stream_camera": 1,
"profile.default_content_setting_values.geolocation": 0,
"profile.default_content_setting_values.notifications": 1
})
driver = webdriver.Chrome(options=opt)
第 3 步:使用此命令转到 Google meet
蟒蛇3
# go to google meet
driver.get('https://meet.google.com/xby-zehb-ncf')
第 4 步:调用以下函数将关闭摄像头和麦克风。在这个函数turnOffMicCam()中,我们使用selenium中名为find_element_by_xpath()的函数通过 xpath 找到麦克风和相机按钮。
蟒蛇3
# explicit function to turn off mic and cam
def turnOffMicCam():
# turn off Microphone
time.sleep(2)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[1]/div/div/div').click()
driver.implicitly_wait(3000)
# turn off camera
time.sleep(1)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[2]/div/div').click()
driver.implicitly_wait(3000)
第 5 步:下面的函数将帮助我们加入 Google meet 的会议。在这个函数joinNow()中,我们使用selenium中名为find_element_by_css_selector()的函数通过其 css 选择器找到立即加入按钮,然后单击它加入会议! (我们在AskToJoin()函数中做同样的事情)。
蟒蛇3
def AskToJoin():
# Ask to Join meet
time.sleep(5)
driver.implicitly_wait(2000)
driver.find_element_by_css_selector(
'div.uArJ5e.UQuaGc.Y5sE8d.uyXBBb.xKiqt').click()
# Ask to join and join now buttons have same xpaths
第 6 步:下面是使用提供的凭据登录 Google 帐户的函数。在这个函数Glogin(mail,pw)中,我们使用selenium中名为find_element_by_id()的函数通过其 id 找到电子邮件文本框,并使用send_keys () 输入电子邮件并使用其id再次单击下一步按钮并找到密码文本使用其 xpath 框,使用send_keys输入密码并再次单击使用其ID登录
蟒蛇3
def Glogin(mail_address, password):
# Login Page
driver.get(
'https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/&ec=GAZAAQ')
# input Gmail
driver.find_element_by_id("identifierId").send_keys(mail_address)
driver.find_element_by_id("identifierNext").click()
driver.implicitly_wait(10)
# input Password
driver.find_element_by_xpath(
'//*[@id="password"]/div[1]/div/div[1]/input').send_keys(password)
driver.implicitly_wait(10)
driver.find_element_by_id("passwordNext").click()
driver.implicitly_wait(10)
# go to google home page
driver.get('https://google.com/')
driver.implicitly_wait(100)
以下是基于上述逐步方法的完整程序:
蟒蛇3
# import required modules
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
def Glogin(mail_address, password):
# Login Page
driver.get(
'https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/&ec=GAZAAQ')
# input Gmail
driver.find_element_by_id("identifierId").send_keys(mail_address)
driver.find_element_by_id("identifierNext").click()
driver.implicitly_wait(10)
# input Password
driver.find_element_by_xpath(
'//*[@id="password"]/div[1]/div/div[1]/input').send_keys(password)
driver.implicitly_wait(10)
driver.find_element_by_id("passwordNext").click()
driver.implicitly_wait(10)
# go to google home page
driver.get('https://google.com/')
driver.implicitly_wait(100)
def turnOffMicCam():
# turn off Microphone
time.sleep(2)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[1]/div/div/div').click()
driver.implicitly_wait(3000)
# turn off camera
time.sleep(1)
driver.find_element_by_xpath(
'//*[@id="yDmH0d"]/c-wiz/div/div/div[8]/div[3]/div/div/div[2]/div/div[1]/div[1]/div[1]/div/div[4]/div[2]/div/div').click()
driver.implicitly_wait(3000)
def joinNow():
# Join meet
print(1)
time.sleep(5)
driver.implicitly_wait(2000)
driver.find_element_by_css_selector(
'div.uArJ5e.UQuaGc.Y5sE8d.uyXBBb.xKiqt').click()
print(1)
def AskToJoin():
# Ask to Join meet
time.sleep(5)
driver.implicitly_wait(2000)
driver.find_element_by_css_selector(
'div.uArJ5e.UQuaGc.Y5sE8d.uyXBBb.xKiqt').click()
# Ask to join and join now buttons have same xpaths
# assign email id and password
mail_address = 'emaild@gmail.com'
password = 'geeksforgeeks'
# create chrome instamce
opt = Options()
opt.add_argument('--disable-blink-features=AutomationControlled')
opt.add_argument('--start-maximized')
opt.add_experimental_option("prefs", {
"profile.default_content_setting_values.media_stream_mic": 1,
"profile.default_content_setting_values.media_stream_camera": 1,
"profile.default_content_setting_values.geolocation": 0,
"profile.default_content_setting_values.notifications": 1
})
driver = webdriver.Chrome(options=opt)
# login to Google account
Glogin(mail_address, password)
# go to google meet
driver.get('https://meet.google.com/xby-zehb-ncf')
turnOffMicCam()
# AskToJoin()
joinNow()
输出: