Как бороться с ошибкой «AttributeError: у объекта NoneType нет атрибута send_keys» в селене - PullRequest
0 голосов
/ 12 октября 2019

Я хотел что-то ввести в текстовое поле. Итак, я открыл веб-страницу, нажал на область текстового поля, затем нажал на текстовое поле. Однако я получаю эту ошибку

tab = tab.send_keys("title")
AttributeError: 'NoneType' object has no attribute 'send_keys'

Вот код, который я попробовал.

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

response = webdriver.Chrome('C:/Users\jag\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
response.implicitly_wait(20)
response.get("https://reqbin.com/")

tab = response.find_element_by_xpath("//*[@id='reqForm']/ul/li[3]/a").click()

tab = tab.send_keys("title")

Ответы [ 2 ]

2 голосов
/ 12 октября 2019

.click() возвращает Нет. Вы, вероятно, хотите сделать их отдельно:

tab = response.find_element_by_xpath("//*[@id='reqForm']/ul/li[3]/a")
tab.click()
tab.send_keys("title")
0 голосов
/ 12 октября 2019

Вы получили ошибку, потому что .click() метод ничего не возвращает - None.
Сначала вам нужно нажать на кнопку Content.
Ввод текста на textarea на сайтенемного сложно. Чтобы активировать textarea , вам нужно щелкнуть на определенном div. Ниже приведен пример того, как можно вводить текст:

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('C:/Users\jag\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
wait = WebDriverWait(driver, 5)


driver.get("https://reqbin.com/")

# Content button
driver.find_element_by_css_selector("[href='#pills-req-content']").click()
# wait to be clickable and click to the DIV to activate textarea
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#pills-req-content .CodeMirror"))).click()
# enter text
driver.find_element_by_css_selector("#pills-req-content .CodeMirror textarea").send_keys("title")

Для ввода многострочного текста используйте \n, например: этот текст является многострочным \n это следующая строка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...