Поле пароля не принимает ключи, используя Selenium через Python - PullRequest
1 голос
/ 30 мая 2019

Я пытаюсь отправить ключи через селен, который он принимает для имени пользователя, но не для пароля.

Тогда я попытался щелкнуть и отправить ключи.

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.visibility_of_element_located((By.ID,"txtPassword"))).click()
WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.ID,"txtPassword"))).send_keys("san")

Я не получаю сообщения об ошибке, но он не отправляет ключи для пароля

Ответы [ 4 ]

0 голосов
/ 30 мая 2019

Попробуйте это:

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()
0 голосов
/ 30 мая 2019

Приведенный выше код должен работать. Однако, я тестировал следующий код в браузере 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

0 голосов
/ 30 мая 2019

Чтобы отправить последовательность символов в ИДЕНТИФИКАТОР ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ , необходимо вызвать 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")
    
  • Снимок браузера:

userid_password

0 голосов
/ 30 мая 2019

попробуйте с этим кодом :

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_to_be_clickable((By.ID,"txtPassword"))) возвращает веб-элемент, в котором вы можете использовать такие методы, как 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')

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')
...