首页 > 解决方案 > Python 硒 h

问题描述

我在尝试登录网站时收到“selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:[name="username"]”,我该怎么办?

代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Firefox()

driver.get("https://tr.pilot.darkorbit.com/community/")
time.sleep(3)
driver.find_element_by_name("username").send_keys("aaase")
driver.find_element_by_name("password").send_keys("bbbb")
driver.find_element_by_class_name("bgcdw_button bgcdw_login_form_login").send_keys(Keys.ENTER)
time.sleep(3)

driver.quit()

地点:

<form name="bgcdw_login_form" method="post" class="bgcdw_login_form" action="https://sas.bpsecure.com/Sas/Authentication/Bigpoint?authUser=22&amp;token=AhDfvh-wPispzDuutUzjZkBZ53XaPjktIJ_B_UDBjraljR__1oMOr9LNpV7hifoElG21nzuHgeS9h8SFFvLsnfgGTcGvG53RMyISXJbj_td5t-j_g94BImmZp5P-ZOCrFNkuBU1Ifxdlv3H2TutvEC0png4CufHp0h69swHlwxJmqFCL6YqN11-fjiAHO0HwkoaQ2y9iEo4ZTzGvDSiEzaU-c2NTpIuSL8WyjJUVaNGPUNQ41wvt2Nz9Z8jXa6Zy45A4B9E6bAuY5XxF6t29-dRni9vHfyxeTgUlD9NkFRc7MNUz70nBtxHJoARdE08KVsJ9W8hPDjfRvQ3Zuaa3loOi2iY-WJ5w2iXtNIJ-8lx4MFqhQNLE8ZgXO22f9HBAvMQw2zac2C4IXTb1yy0WlLo41lUUefTsBV4Epjfn8K4" novalidate="novalidate" target="_parent">
        <div class="bgc_error_translations" style="display:none">
            <div data-error-key="bgc.error.username_isTooShort">Seçtiğin üye ismi çok kısa. Lütfen yeni bir üye ismi gir ve adın en az 4 en uzun 20 karakterden oluşmasına dikkat et.</div>
            <div data-error-key="bgc.error.username_isTooLong">Seçtiğin üye ismi çok uzun. Lütfen yeni bir üye ismi gir ve adın en az 4 en uzun 20 karakterden oluşmasına dikkat et.</div>
            <div data-error-key="bgc.error.username_notGiven">Üye adını gir</div>
            <div data-error-key="bgc.error.password_isTooShort">Seçtiğin şifre çok kısa. Lütfen yeni şifre gir ve şifrenin en az 4 ve en uzun 45 karakterden oluşmasına dikkat et.</div>
            <div data-error-key="bgc.error.password_isTooLong">Seçtiğin şifre çok uzun. Lütfen yeni şifre gir ve şifrenin en az 4 ve en uzun 45 karakterden oluşmasına dikkat et.</div>
            <div data-error-key="bgc.error.password_notGiven">Lütfen şifreni gir.</div>
            <div data-error-key="bgc.error.email_invalidAddress">E-mail adresin doğru değil. Lütfen geçerli bir e-posta adresi gir.</div>
            <div data-error-key="bgc.error.email_notGiven">E-posta adresini yazar mısın?</div>
            <div data-error-key="bgc.error.checkbox_tick">Lütfen kutuyu işaretleyin.</div>
        </div>
        <fieldset class="bgcdw_login_form_login"><div class="bgcdw_input_text bgcdw_login_form_username">
                <label for="bgcdw_login_form_username" style="display: none;">Kullanıcı adı</label>
                <input id="bgcdw_login_form_username" name="username" type="text" maxlength="20" placeholder="Kullanıcı adı"></div>
            <div class="bgcdw_input_password bgcdw_login_form_password">
                <label for="bgcdw_login_form_password" style="display: none;">Şifre</label>
                <input id="bgcdw_login_form_password" name="password" type="password" maxlength="45" placeholder="Şifre"></div>
        </fieldset><div class="bgcdw_login_container_remindpassword">
            <a class="bgcdw_remindpassword" target="_parent" href="https://accountcenter.bpsecure.com/PasswordReminder?pid=22&amp;lang=tr_TR" data-analyticslabel="web-login-link-remindpassword">Şifremi unuttum!</a>
        </div>
        <fieldset class="bgcdw_login_form_buttons"><button class="bgcdw_button bgcdw_login_form_login" type="submit">Giriş</button><button class="bgcdw_button bgcdw_login_form_register" type="button" onclick="window.location='/frame';return false;">Kaydol</button></fieldset></form>

标签: pythonselenium

解决方案


如果输入没有显示在框架中,您必须将浏览器滚动到显示元素的相关区域。Selenium 与远程控制一起使用,因此它不会在加载前解析内容。

页面加载时,您会看到一切正常,但无法定位元素,因为某些元素可能位于页面底部,并且这些不可见元素无法解析给浏览器,实际上它们位于 RAM(内存)中。

另外,不建议使用 sleep 来检测页面加载,您应该使用这些关键字在 google 和 SO 中搜索;selenium 等待页面加载。


推荐阅读