Selenium with Python - как заставить его заполнять по одному текстовому полю за раз - PullRequest
0 голосов
/ 22 октября 2019

Я использую Selenium с Python для входа на веб-сайт, поэтому он должен передать имя пользователя одному текстовому полю и затем пароль другому. Когда он заполняет имя пользователя, он иногда начинает вводить пароль в том же текстовом поле (обычно он не вводит полный пароль, только его часть). Как будто он пытается набрать слишком быстро, а затем начинает вводить пароль, прежде чем он выбирает текстовое поле пароля. Как мне заставить его вводить текст последовательно?

from selenium import webdriver

driver = webdriver.Chrome(executable_path=Config.driver_path)
driver.get(Config.start_url)
driver.find_element_by_xpath('//someXPathToUsername').send_keys(Config.username)
driver.implicitly_wait(Config.driver_wait_time)
driver.find_element_by_xpath('//someXPathToPassword').send_keys(Config.password)
driver.implicitly_wait(Config.driver_wait_time)
driver.find_element_by_xpath('//someXPathToLoginButton').click()

1 Ответ

0 голосов
/ 22 октября 2019

Вам нужно установить его так, чтобы он искал класс или идентификатор div, на который вы хотите нацелиться Подробнее здесь о Selenium Locating Elements Я думаю, что это ваша проблема, он не знаетчто нацелиться, а затем он делает это совершенно неправильно.

посмотрите на следующий код, который я сделал

from selenium import webdriver
from selenium.webdriver.support.ui import Select
import pprint as pp
import time
from selenium.webdriver.common.keys import Keys


def login(driv):
#insert the website url between the ('')
    driv.get('WebsiteURLHere')
 #select the username div by id
    login_email = driv.find_element_by_id_name('username')
#select the password div by id
    login_password = driv.find_element_by_id_name('password')
#enters the email address in the username field 
    login_email.send_keys('EmailAddressHere') 
#enters the password in the password field  
    login_password.send_keys('passwordhere') 
#finds the sumbit button and a click command to send info
    driv.find_element_by_id('btn__primary').click() 
    time.sleep(3)
    return (driv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...