首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能访问身份验证中的元素,弹出的内容是“使用google```‘登录”

不能访问身份验证中的元素,弹出的内容是“使用google```‘登录”
EN

Stack Exchange QA用户
提问于 2021-09-02 09:50:40
回答 1查看 281关注 0票数 1

尝试selenium作为一个只有google身份验证的网页。当单击联接按钮时,弹出窗口就会出现,其中只有一个按钮名为sign。由于我是新来的,我不能访问弹出窗口按钮。

代码语言:javascript
运行
复制
import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.by import By

from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://shatkora.co/grocery")

oin_btn=driver.find_element_by_xpath('//*[@id="layout-header"]/div/button')
join_btn.click()

time.sleep(5)
button=driver.find_element_by_xpath('//*[@id="__next"]/div[1]/div/div[6]/div/div/div/div[1]/button')
EN

回答 1

Stack Exchange QA用户

发布于 2021-09-06 08:34:49

这其实是个很有趣的案子。首先,这些代码将起作用:

代码语言:javascript
运行
复制
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://shatkora.co/grocery")

join_btn = driver.find_element_by_xpath('//*[@id="layout-header"]/div/button')
join_btn.click()

wait = WebDriverWait(driver, 10)
signIn = wait.until(EC.element_to_be_clickable((By.XPATH, '//button[text()="Sign in with Google"]')))

time.sleep(5)
signIn.click()
# Commenting below line for the sake of demo
# driver.quit()

这里不寻常的是,任何形式的查找元素都是成功的,但是这还不够。

据我所知,该区域有一个快速的动画,尽管元素已经在DOM和active中(这就是为什么预期条件在这里工作),它仍然不能被点击(或者被脚本阻止,或者在元素的变化坐标(我不知道)的情况下),除非动画已经完成。

因此,在查找了一个元素之后,您还必须等待动画完成。最简单的方法是添加显式等待。另一个--更复杂但更少阻塞--是等待区域的某些CSS值。

票数 1
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/48977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档