Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
密码字段未通过Python使用Selenium获取密钥_Python_Selenium_Selenium Webdriver_Css Selectors_Webdriverwait - Fatal编程技术网

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

密码字段未通过Python使用Selenium获取密钥,python,selenium,selenium-webdriver,css-selectors,webdriverwait,Python,Selenium,Selenium Webdriver,Css Selectors,Webdriverwait,我试图通过selenium发送密钥,它是用户名,而不是密码 我试过点击并发送按键 密码字段的HTML格式: <div> <input name="txtPassword" type="password" id="txtPassword" required="" style="margin-bottom:0px;" class="blur"> <a id="btnSmallForgotPassword" class="smallForgotPasswo

我试图通过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>

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

请尝试使用此代码

WebDriverWait(driver, 3).until(EC.element_to_be_clickable((By.ID,"txtPassword"))).send_keys('your_password')
您不应多次创建WebDriverWait对象,请按如下方式使用:

wait = WebDriverWait(driver,10)

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')
wait.until(EC.element\u to\u clickable((By.ID,“txtPassword”))
返回一个web元素,您可以在其中使用
click()、clear()、send\u keys()等方法

您也可以这样编写代码:

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

您可以使用此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')

上面的代码应该可以工作。但是我已经在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")
输出:

要将字符序列发送到用户ID密码字段,您需要诱导WebDriverWait以使元素可单击,并且可以使用以下方法:

  • 代码块:

    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")
    
  • 浏览器快照:

试试这个:

from selenium import webdriver
import time

driver = webdriver.Chrome('/usr/bin/chromedriver')
driver.get('http://backgriduk.medialava.com/pages/Staff/Login.aspx?LANGUAGE_ID=3&O=7')
time.sleep(3)

username = driver.find_element_by_id("txtUser")
username.clear()
# insert username
username.send_keys("mrcats")

password = driver.find_element_by_name("txtPassword")
password.clear()
# insert password
password.send_keys("catskillz")

login = driver.find_element_by_name("btnLogin")
#click on login button
login.click()

它也不工作,我附加的网站试图刮编辑2你也可以使用更稳定。它应该可以很好地工作,虽然我没有点击登录按钮。谢谢,但有时它工作,有时不。我不知道它是什么样子的它工作了一两次,但有时失败了Hi Debanjan你的解决方案有时有效有时无效。@abhishekgupta我有点不清楚你到底是什么意思…有时有效有时无效…)如果它只工作一次,它将始终工作,除非系统RAM和内存需求不足。顺便说一句,你看到任何错误了吗?我没有看到任何错误,它只是不发送密码的密钥。@abhishekgupta你确定你在没有任何悬空的webdriver实例的情况下,在一块干净的石板上触发了测试吗?
from selenium import webdriver
import time

driver = webdriver.Chrome('/usr/bin/chromedriver')
driver.get('http://backgriduk.medialava.com/pages/Staff/Login.aspx?LANGUAGE_ID=3&O=7')
time.sleep(3)

username = driver.find_element_by_id("txtUser")
username.clear()
# insert username
username.send_keys("mrcats")

password = driver.find_element_by_name("txtPassword")
password.clear()
# insert password
password.send_keys("catskillz")

login = driver.find_element_by_name("btnLogin")
#click on login button
login.click()