【问题标题】:Can't find element selenium python找不到元素硒python
【发布时间】:2017-04-18 23:04:53
【问题描述】:
<input placeholder="Enter Password" class="password-input" type="password">

以上是我尝试使用以下代码发送密钥的元素。

from selenium import webdriver
from selenium.common.exceptions import StaleElementReferenceException, TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome('C:\chromedriver_win32\chromedriver.exe')

driver.get('https://howsecureismypassword.net/')

elem = driver.find_element_by_name('password-input')
elem.send_keys('password')

html = driver.page_source

这是我得到的错误,不知道为什么。

 RESTART: C:\Users\bakat\AppData\Local\Programs\Python\Python35-32\Science 

Experiment\Science_Experiment_Password_Tester.py 
Traceback (most recent call last):
  File "C:\Users\bakat\AppData\Local\Programs\Python\Python35-32\Science Experiment\Science_Experiment_Password_Tester.py", line 18, in <module>
    elem = driver.find_element_by_name('password-input')
  File "C:\Users\bakat\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 365, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "C:\Users\bakat\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 752, in find_element
    'value': value})['value']
  File "C:\Users\bakat\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "C:\Users\bakat\AppData\Local\Programs\Python\Python35-32\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"password-input"}
  (Session info: chrome=57.0.2987.133)
  (Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 10.0.14393 x86_64)

这是网站 - https://howsecureismypassword.net/

【问题讨论】:

    标签: python windows selenium selenium-chromedriver


    【解决方案1】:

    尝试find_element_by_class_name 而不是find_element_by_name

    查看您网站的 HTML,您想要的元素的类名password-input,而不是名称。

    from selenium import webdriver
    from selenium.common.exceptions import StaleElementReferenceException, TimeoutException
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.keys import Keys
    
    driver = webdriver.Chrome('C:\chromedriver_win32\chromedriver.exe')
    
    driver.get('https://howsecureismypassword.net/')
    
    elem = driver.find_element_by_class_name('password-input')
    elem.send_keys('password')
    
    html = driver.page_source
    

    【讨论】:

    • 我仍然得到同样的错误,但这个改变了--- selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“方法”:“类名”, “选择器”:“密码输入”}
    • 也许尝试在driver.getfind_element 行之间等待。有时 selenium 移动得太快了,它会试图在部分加载的页面上找到一个元素。尝试导入time,然后将time.sleep(5) 放在driver.getelem=driver.find_elem.. 之间。这是一个非常长的等待,但它应该表明这是否是问题所在。
    • 你说得对 Christopher Apple 现在可以使用了 - 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多