Как я могу определить send_keys для функции Python? - PullRequest
2 голосов
/ 20 июня 2019

Мне нужен совет о том, как вызвать send_keys для ввода данных пользователем.Если я назначу переменную для строки self.browser.find_elements_by_id ("Login1_UserName") и затем отправлю ее send_keys, решение не будет работать.Что я делаю не так?

 def login(Self):
     # login to the app
     username = self.browser.find_elements_by_id ("Login1_UserName")
     username.send_keys ("userone")

Ответы [ 2 ]

1 голос
/ 20 июня 2019

find_elements_* вернет список , и вы не сможете вызвать send_keys() в списке .Поэтому вам нужно заменить find_elements_* на find_element_*, и вы можете использовать следующие Стратегии локатора :

def login(Self):
    # login to the app
    self.browser.find_element_by_id("Login1_UserName").send_keys("userone")

Согласно рекомендациям при вызове send_keys() вам нужно вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любое из следующих решений:

  • Использование ID:

    WebDriverWait(self.browser, 20).until(EC.element_to_be_clickable((By.ID, "Login1_UserName"))).send_keys("Tomasito")
    
  • Использование CSS_SELECTOR:

    WebDriverWait(self.browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#Login1_UserName"))).send_keys("Tomasito")
    
  • Использование XPATH:

    WebDriverWait(self.browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='Login1_UserName']"))).send_keys("Tomasito")
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 20 июня 2019

Это потому, что вы использовали find_elements_by_id("Login1_UserName"), он вернет список, а НЕ элемент. Вы должны использовать find_element_by_id("Login1_UserName")

def login(Self):
     # login to the app
     username = self.browser.find_element_by_id("Login1_UserName")
     username.send_keys("userone")

Попробуйте этот код, посмотрите, работает ли он.

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

driver=webdriver.Chrome("path of chrome driver")
driver.get('url')
username=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.ID,'Login1_UserName')))
username.send_keys("userone")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...