gpt4 book ai didi

python - Selenium Python : Can't Get Path To Chat Element On Google Hangouts

转载 作者:行者123 更新时间:2023-12-04 09:33:29 26 4
gpt4 key购买 nike

我最近在 python 中的 selenium 模块上遇到了很多麻烦。我正在尝试制作一个脚本,可以根据其中一个 friend 的要求自动向我的 friend 发送消息。
我可以使用它登录 Google Hangouts,但我在访问聊天时遇到了相当大的困难。如果我想点击一个对话来打开聊天窗口,我会认为我可以使用 selenium 的 find_element_by_id() 函数选择 id。
但是,这不起作用,因为环聊使用在某些事件后更改的动态 ID。我真的不知道该怎么办。我尝试使用 xpath,但这也不起作用。我真的不知道在这一点上做什么,因为我尝试的任何东西似乎都不起作用。
如果您想自己重现此内容,则必须获取 chromedriver 并输入路径。您还必须将自己的电子邮件和密码输入正确的 send_keys() 函数。

from selenium import webdriver
import time

# get browser set up
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_argument("disable-infobars")
options.add_argument("--disable-extensions")
browser = webdriver.Chrome(options=options,
executable_path=r"chromedriver path")
browser.get('https://stackoverflow.com/users/login')

# locate and click sign in button on stackoverflow (can't sign in on regular google)
google_button = browser.find_element_by_class_name('s-btn__google')
google_button.click()
email_elem = browser.find_element_by_id('identifierId')
email_elem.send_keys('email')
next_button = browser.find_element_by_id('identifierNext')
next_button.click()
# enters password
while True:
try:
pwd_elem = browser.find_element_by_css_selector('input[type = "password"]')
pwd_elem.send_keys('password')
break
except:
time.sleep(1)
next_button = browser.find_element_by_id("passwordNext")
next_button.click()
while True:
try:
# gets to hangouts
browser.execute_script('''window.open("https://hangouts.google.com/", "_blank");''')
browser.switch_to.window(browser.window_handles[-1])
break
except:
time.sleep(1)
refreshed = False
while True:
try:
# CAN'T FIND PATH TO CHAT
chat = browser.find_element_by_xpath('/html/body/div/div/div/div/div[2]/div/div/div[2]/div/div/div/div/div[1]/div[1]/div/div[1]')
chat.click()
break
except:
print('not found')
if not refreshed:
# refreshes because hangouts will first load without signing in
browser.refresh()
refreshed = True
time.sleep(4)

最佳答案

您在框架内的元素,您需要先切换:

browser.switch_to.frame(browser.find_element_by_class_name('Xyqxtc'))

chat = browser.find_element_by_xpath('/html/body/div/div/div/div/div[2]/div/div/div[2]/div/div/div/div/div[1]/div[1]/div/div[1]')
chat.click()
但是不推荐使用绝对路径,它很容易改变。
以下定位器看起来更好:
chat = browser.find_element_by_css_selector('div.MM')

关于python - Selenium Python : Can't Get Path To Chat Element On Google Hangouts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62707729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com