使用Python Selenium选择文本框,更改fram

2024-09-27 00:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

警告:完全新手

我正在尝试为网站上的“登录ID”选择文本框: https://www.schwab.com/public/schwab/nn/login/login.html&lang=en

我正在使用python3.7和Selenium。我试图检查textbox元素以找到CSS选择器。这会导致错误。我知道我需要切换我的'框架',但我不能阅读网站后端编码足够好,找到正确的框架名称。你知道吗

from selenium import webdriver
browser = webdriver.Chrome(executable_path=driver_path, chrome_options=option)
Login_Id_TextBox = browser.find_element_by_id('LoginId')

有谁能帮我找到正确的框架或指导我找到一个好的来源,了解他们更多?你知道吗


Tags: pathhttpsbrowsercom框架id警告网站
2条回答

下面是满足您需求的简单代码,我成功地测试了它。你知道吗

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.schwab.com/public/schwab/nn/login/login.html&lang=en')
driver.switch_to_frame("loginIframe")
Login_Id_TextBox = driver.find_element_by_id('LoginId')

要在网站https://www.schwab.com/public/schwab/nn/login/login.html&lang=en上的登录ID的文本框中发送字符序列,因为所需元素位于<iframe>中,因此必须:

  • 为所需的frame_to_be_available_and_switch_to_it()诱导WebDriverWait。你知道吗
  • 为所需的element_to_be_clickable()诱导WebDriverWait。你知道吗
  • 您可以使用以下Locator Strategies之一:

    • CSS_SELECTOR

      driver.get('https://www.schwab.com/public/schwab/nn/login/login.html&lang=en')
      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"iframe#loginIframe")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.form-control#LoginId"))).send_keys("averagejoe1080")
      
    • XPATH

      driver.get('https://www.schwab.com/public/schwab/nn/login/login.html&lang=en')
      WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//iframe[@id='loginIframe']")))
      WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@class='form-control' and @id='LoginId']"))).send_keys("averagejoe1080")
      

Here you can find a relevant discussion on Ways to deal with #document under iframe

相关问题 更多 >

    热门问题