【问题标题】:Python with Selenium: Unable to find element to type in带有 Selenium 的 Python:无法找到要输入的元素
【发布时间】:2018-05-31 07:34:28
【问题描述】:

我正在尝试使用 Selenium 在网站上查找元素,但遇到了困难:

我正在查看的页面:https://corporate.axisbank.co.in/

所选元素的 HTML 如下所示:

<input name="FORM_CORPORATEID" type="text" onpaste="return false" ondrop="return false" ondrag="return false" oncopy="return false" oncut="return false" autocomplete="off" id="corporateId" class="cm-input-box has-gradient-border">

我尝试过使用 Id、XPath 等,但总是出错:

from selenium import webdriver

driver = webdriver.Chrome()
bankurl= "https://corporate.axisbank.co.in/"
driver.get(bankurl)
driver.find_element_by_name("FORM_CORPORATEID").send_keys("USERNAME")

我最终得到以下错误:

Traceback (most recent call last):
  File "C:/Users/alwyn.kotze/PycharmProjects/AlwynAuto1/Automations/Axis1.py", line 8, in <module>
    driver.find_element_by_name("FORM_CORPORATEID").send_keys("USERNAME")
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 489, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 957, in find_element
    'value': value})['value']
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 314, in execute
    self.error_handler.check_response(response)
  File "C:\Python\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"FORM_CORPORATEID"}
  (Session info: chrome=66.0.3359.181)
  (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.16299 x86_64)

什么可能导致这个错误?

【问题讨论】:

  • 你能找到页面中的其他元素吗?
  • 不,找不到它们中的任何一个 - 但是当我使用 Selenium IDE 时,我可以选择这些元素并无缝登录

标签: python google-chrome selenium selenium-webdriver webdriver


【解决方案1】:

根据您提供的用于查找元素并发送文本 USERNAME 的 HTML,您需要诱导 WebDriverWait 以使 元素可点击 如下:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    driver = webdriver.Chrome()
    bankurl= "https://corporate.axisbank.co.in/"
    driver.get(bankurl)
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#corporateId"))).send_keys("USERNAME")
    
  • 浏览器快照:

【讨论】:

  • 非常感谢!所以我基本上需要它等待元素加载才能被选中。
【解决方案2】:
from selenium import webdriver
import time

driver = webdriver.Chrome()
bankurl= "https://corporate.axisbank.co.in/"

driver.get(bankurl)
time.sleep(5)

driver.find_element_by_id('corporateId').send_keys("USERNAME")

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 2022-06-11
    • 2022-07-28
    • 2021-07-07
    • 1970-01-01
    • 2018-08-01
    • 2019-05-05
    • 2020-03-31
    • 1970-01-01
    相关资源
    最近更新 更多