2017-04-18 190 views
0
<input placeholder="Enter Password" class="password-input" type="password"> 

上面是我嘗試使用下面的代碼發送密鑰的元素。找不到元素硒python

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/

回答

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 
+0

我仍然得到同樣的錯誤,但這種改變--- selenium.common.exceptions.NoSuchElementException:消息:沒有這樣的元素:找不到元素:{「方法」:「類名」,「選擇「:」password-input「} –

+1

也許嘗試在'driver.get'和'find_element'行之間等待。硒有時會移動得太快,以至於它本身不錯,並嘗試在部分加載的頁面上找到元素。嘗試導入'time',然後在'driver.get'和'elem = driver.find_elem..'之間放置'time.sleep(5)'行。這是一個非常漫長的等待,但它應該表明,如果這是問題。 –

+0

你是對的克里斯托弗蘋果現在的作品 - 謝謝! –