我该如何处理这个覆盖的框架(模态的?)?(用python,selenium)

ltqd579y  于 2022-12-21  发布在  Python
关注(0)|答案(1)|浏览(111)

我想写代码登录这个页面,
page
当我点击登录时,弹出登录页面。(也许它叫"模态",对吗?)
所以我写了这样的代码
'''

# Click the sign in button
sign_in_link = browser.find_element_by_class_name("a-link.sign-in.menu-link.open-lightbox")
sign_in_link.click()
time.sleep(2)

#login
email_input = browser.find_element(By.XPATH, '//*[@id="signInFrame"]/div/div/div/div/div/form/div/div[1]/table/tbody/tr[1]/td/div[1]/input')
email_input.click()
pyperclip.copy("my id")
pyautogui.hotkey("ctrl", "v")

'''
但是它不工作。错误消息是

*** selenium 元素。常见。异常。无此类元素异常:消息:没有此元素:找不到元素:{"方法":" xpath ","选择器":"//* [@id =" signInFrame "]/div/div/div/div/表格/div/div [1 ]/表格/表格体/tr [1 ]/td/div [1 ]/输入"}***

我该如何修改这段代码?(这是我有生以来第一个关于编程的问题,所以也许你还不太明白,那么我会补充一些关于这个问题的信息。
谢谢你读我的话

y53ybaqx

y53ybaqx1#

通过检查HTML代码,我们可以看到登录表单包含在iframe元素中,其中id=loginFrame

因此,为了能够与登录表单交互,我们首先必须通过运行以下代码切换到iframe

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
WebDriverWait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "loginFrame")))

之后,您可以运行代码email_input = ...并单击元素

相关问题