Заполнить текстовое поле после перехода к нему с помощью Selenium? - PullRequest
0 голосов
/ 29 октября 2019

Мне удалось написать программу, которая может перейти на нужный веб-сайт и нажать на первое текстовое поле, которое я хочу заполнить. Проблема, с которой я столкнулся, заключается в том, что используемый мной метод send_keys не заполняет нужное текстовое поле с помощью «Testing», и я получаю эту ошибку:

AttributeError: 'NoneType' object has no attribute 'find_elements_by_xpath'

Вот код, пока:

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

driver = selenium.webdriver.Chrome(executable_path='path_to_chromedriver')


def get_url(url):
    driver.get(url)
    driver.maximize_window()
    Wait(driver, 30).until(expected_conditions.presence_of_element_located
                           ((By.ID, 'signup-button'))).click()


def fill_data():
    sign_up = Wait(driver, 30).until(expected_conditions.presence_of_element_located
                                     ((By.XPATH,
                                       '/html/body/onereg-app/div/onereg-form/div/div/form/section/section['
                                       '1]/onereg-alias-check/ '
                                       'fieldset/onereg-progress-meter/div[2]/div[2]/div/pos-input[1]'))).click()
    sign_up.send_keys('Testing')


get_url('https://www.mail.com/')
# Find the signup element
fill_data()

1 Ответ

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

find_elements_by_xpath` возвращает все совпадающие элементы, представляющие собой список, поэтому вам нужно выполнить цикл и получить текстовый атрибут для каждого элемента

Кроме того, в методе заполнения данных вы пытаетесь заполнить данные длярегистрационную форму, чтобы вам нужно было идентифицировать все элементы в этой форме и обработать ее с вашими данными.

Ваш xpath был неверен при заполнении идентификатора электронной почты, обновите xpath и повторите попытку

from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By 
import time 
from selenium.webdriver.support.ui import WebDriverWait as Wait



# Open Chrome
driver = webdriver.Chrome(executable_path='path_to_chromedriver')


def get_url(url):
    driver.get(url)
    driver.maximize_window()



def fill_data():

    Wait(driver, 30).until(EC.element_to_be_clickable
                           ((By.ID, 'signup-button'))).click()

    inputBox = Wait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "/html/body/onereg-app/div/onereg-form/div/div/form/section/section[1]/onereg-alias-check/fieldset/onereg-progress-meter/div[2]/div[2]/div/pos-input[1]/input")))
    inputBox.send_keys('Testing')


get_url('https://www.mail.com/')
# Find the signup element
fill_data()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...