密码字段不通过Python使用Selenium获取密钥

2024-09-28 05:29:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过selenium发送密钥,它接受用户名而不是密码。在

我试过点击并发送按键。在

密码字段的HTML:

<div>
    <input name="txtPassword" type="password" id="txtPassword" required="" style="margin-bottom:0px;" class="blur">
    <a id="btnSmallForgotPassword" class="smallForgotPassword visible-sm-block" href="javascript:__doPostBack('btnSmallForgotPassword','')">forgot password</a>
</div>
^{pr2}$

我没有收到错误消息,但它没有发送密码密钥


Tags: namedivid密码inputhtmltypeselenium
3条回答

以上代码应该工作。但是我在chrome浏览器上测试了以下代码,运行良好。在

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver

driver = webdriver.Chrome()
driver.get('http://backgriduk.medialava.com/pages/Staff/Login.aspx?LANGUAGE_ID=3&O=7')
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.ID,'txtUser'))).send_keys("Abhishek")
WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'div.divInnerRightControls #txtPassword'))).send_keys("Abhishek")

输出: Login form

要将字符序列发送到用户ID密码字段,您需要诱导WebDriverWait,以便元素可点击,您可以使用以下Locator Strategy

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Firefox(executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("http://backgriduk.medialava.com/pages/Staff/Login.aspx?LANGUAGE_ID=3&O=7")
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input#txtUser"))).send_keys("abhishek_gupta")
    driver.find_element_by_css_selector("input#txtPassword").send_keys("abhishek_gupta")
    
  • 浏览器快照:

userid_password

尝试使用以下代码

WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.ID,"txtPassword"))).send_keys('your_password')

您不应该创建WebDriverWait的对象太多次,请这样使用它:

^{pr2}$

并且wait.until(EC.element_to_be_clickable((By.ID,"txtPassword")))返回一个web元素,您可以在其中使用click(), clear(), send_keys()等方法

您也可以这样编写代码:

password_field = wait.until(EC.element_to_be_clickable((By.ID,"txtPassword")))
password_field.click()
password_field.send_keys('your_password')

编辑1:

您可以使用此css选择器:

input[id='txtPassword']

编辑2:

您可以使用此完整方法:

wait = WebDriverWait(driver,10)

driver.maximize_window()
driver.get("http://backgriduk.medialava.com/pages/Staff/Login.aspx?LANGUAGE_ID=3&O=7")

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input[id='txtUser']"))).send_keys("abhishek")

wait.until(EC.element_to_be_clickable((By.ID,"txtPassword"))).click()
wait.until(EC.element_to_be_clickable((By.ID,"txtPassword"))).send_keys('your_password')

相关问题 更多 >

    热门问题