为什么这个 Xpath 不适用于 selenium?

Why is this Xpath not working with selenium?

我正在尝试输入电子邮件地址来测试登录,但我仍然收到此错误:no such element: Unable to locate element:

我尝试使用相对和绝对 Xpath 并收到相同的错误消息。

请原谅我,因为我肯定遗漏了一些简单的、非常新的东西!

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import time

driver = webdriver.Chrome()

url = 'https://soundcloud.com/signin'

driver.get(url)

time.sleep(2)

driver.find_element_by_xpath('//*[@id="sign_in_up_email"]').send_keys('test@test.com')

它抛出错误的原因是因为元素 sign_in_up_email 存在于 iframe 中 Refer image

查看 link here 以了解有关如何切换到 iframe 的详细信息

您首先需要切换到 iframe,然后在输入中输入值

注意:- 当您第一次打开页面时,您可能会看到来自 soundcloud 的 accept cookies 弹出窗口,您必须接受

你的解决方案看起来像

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
import time

driver = webdriver.Chrome()

url = 'https://soundcloud.com/signin'

driver.get(url)
driver.maximize_window()
time.sleep(2)
# Accept cookie
driver.find_element_by_id('onetrust-accept-btn-handler').click()
# Switch to frame
driver.switch_to.frame(driver.find_element_by_class_name("webAuthContainer__iframe"))
driver.find_element_by_xpath('//*[@id="sign_in_up_email"]').send_keys('test@test.com')