python - 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&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&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>
解决方案
如果输入没有显示在框架中,您必须将浏览器滚动到显示元素的相关区域。Selenium 与远程控制一起使用,因此它不会在加载前解析内容。
页面加载时,您会看到一切正常,但无法定位元素,因为某些元素可能位于页面底部,并且这些不可见元素无法解析给浏览器,实际上它们位于 RAM(内存)中。
另外,不建议使用 sleep 来检测页面加载,您应该使用这些关键字在 google 和 SO 中搜索;selenium 等待页面加载。
推荐阅读
- android-mediaplayer - 是否可以获得 QMediaPlayer、Qt 5.9 的 Android MediaPlayer sessionID?
- postgresql - 如何在 PostgreSQL 中将 int 转换为字符串
- sql - 从 varchar 中提取日期
- .htaccess - 重定向匹配到外部 url
- google-apps-script - 如何从 google 电子表格中导出数据以创建可以在图表中使用的 arrayToDataTable?
- java - InfluxDB如何获取最后记录的值
- lua - 尝试索引字段“icgnn”(零值)
- teradata - 在组内分组
- ios - Wordpress 图像在 iOS 上显示不好
- php - 在 Laravel 中关闭自动完成