我在python中使用selinium来自动将用户名键入Web浏览器。但它表明无法找到ID。我尝试了必应网站。效果很好。但是在这里,它失败了。 这是网站链接: Website
代码如下:
from selenium import webdriver
driver = webdriver.Firefox(executable_path='/home/paulsteven/selinium_geok_driver/geckodriver')
print("Firefox Browser Invoked")
#driver.get('https://www.bing.com/')
#inputElement = driver.find_element_by_id("sb_form_q")
driver.get('https://chat.smackcoders.com/login')
inputElement = driver.find_element_by_id("loginId")
inputElement.send_keys('smackalpha')
driver.quit()
我得到的错误: Firefox浏览器被调用
Traceback (most recent call last):
File "sel_auto.py", line 8, in <module>
inputElement = driver.find_element_by_id("loginId")
File "/home/paulsteven/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 360, in find_element_by_id
return self.find_element(by=By.ID, value=id_)
File "/home/paulsteven/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
'value': value})['value']
File "/home/paulsteven/.local/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/paulsteven/.local/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="loginId"]
答案 0 :(得分:2)
您需要使用等待条件才能显示元素
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
url = 'https://chat.smackcoders.com/login'
driver = webdriver.Chrome()
driver.get(url)
inputElement = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, "loginId")))
inputElement.send_keys('smackalpha')