Rumah > Soal Jawab > teks badan
我正在用selenium模拟登录一个网站,但是当我已经填写完成帐号密码后,他依然报错。我想知道为什么。
代码如下:
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
import time
import os
from cut import cut_vcode
url = 'http://passport2.chaoxing.com/login?fid=1479&refer=http://i.mooc.chaoxing.com'
driver = webdriver.Firefox()
driver.get(url)
wait = WebDriverWait(driver, 10)
span = wait.until(EC.visibility_of_element_located((By.ID, "nameNoteId")))
span.click()
# 输入帐号
unameId = wait.until(EC.visibility_of_element_located((By.ID, "unameId")))
unameId.send_keys('XX')
# 密码
passwordId = wait.until(EC.visibility_of_element_located((By.ID, "passwordId")))
passwordId.send_keys('XXXXXX')
# 保存验证码图片
driver.set_window_size(1166, 741)
vcode_path = './main.png'
vcode_out_path = './main-cut.png'
driver.save_screenshot(vcode_path)
cut_vcode(vcode_path,vcode_out_path,430,343,502,374)
os.system('tesseract main-cut.png ./abc')
with open ('./abc.txt') as f:
CAPTCHA = f.read()
# 输入验证码
numcode = driver.find_element_by_id('numcode')
numcode.clear()
numcode.send_keys(CAPTCHA)
button = driver.find_element_by_class_name('zl_btn')
time.sleep(3)
button.click()
time.sleep(3)
print driver.title
# lession = driver.find_element_by_class_name('Mcon1img')
# lession.click()
time.sleep(10)
driver.close()
报错:
Traceback (most recent call last):
File "/Users/Ru/Desktop/erya/main.py", line 40, in <module>
button = driver.find_element_by_class_name('zl_btn')
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 410, in find_element_by_class_name
return self.find_element(by=By.CLASS_NAME, value=name)
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 744, in find_element
{'using': by, 'value': value})['value']
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 233, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"class name","selector":"zl_btn"}
Stacktrace:
at FirefoxDriver.prototype.findElementInternal_ (file:///var/folders/pl/64qs2gdd2fzcn35z_gzcn4_r0000gn/T/tmpvbGemj/extensions/fxdriver@googlecode.com/components/driver-component.js:10770)
at FirefoxDriver.prototype.findElement (file:///var/folders/pl/64qs2gdd2fzcn35z_gzcn4_r0000gn/T/tmpvbGemj/extensions/fxdriver@googlecode.com/components/driver-component.js:10779)
at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/pl/64qs2gdd2fzcn35z_gzcn4_r0000gn/T/tmpvbGemj/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
at DelayedCommand.prototype.executeInternal_ (file:///var/folders/pl/64qs2gdd2fzcn35z_gzcn4_r0000gn/T/tmpvbGemj/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
at DelayedCommand.prototype.execute/< (file:///var/folders/pl/64qs2gdd2fzcn35z_gzcn4_r0000gn/T/tmpvbGemj/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
黄舟2017-04-18 09:16:02
NoSuchElementException
Mesej ralat sangat jelas. Tiada unsur yang anda perlukan
迷茫2017-04-18 09:16:02
Saya nampaknya telah menemui sebabnya Apabila saya cuba mengulas kod berikut, ia tidak lagi melaporkan ralat. Ralat nampaknya: apabila saya selesai memasukkan kod pengesahan, ia akan menyerahkan secara automatik dan melompat ke halaman utama. Tidak perlu mengklik butang hantar.
Jadi class_name=zl_btn
tidak boleh ditemui pada halaman utama diubah hala dan ralat dilaporkan.
#button = driver.find_element_by_class_name('zl_btn')
#time.sleep(3)
#button.click()