cari

Rumah  >  Soal Jawab  >  teks badan

python - selenium 提交表单成功,依然报错问题

我正在用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)
高洛峰高洛峰2889 hari yang lalu508

membalas semua(2)saya akan balas

  • 黄舟

    黄舟2017-04-18 09:16:02

    NoSuchElementException
    Mesej ralat sangat jelas. Tiada unsur yang anda perlukan

    balas
    0
  • 迷茫

    迷茫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()
    

    balas
    0
  • Batalbalas