2016-05-13 2 views
1

Я столкнулся со следующей проблемой с chromedriver: у меня есть поле ввода текста и тексарея. Я могу успешно отправить текст обоих элементов с последующей кодомКак избавиться от исключения элемента исключить фокус

input = driver.find_element_by_xpath('//input[@type="text"]') 
input.send_keys('test') 
textarea = driver.find_element_by_xpath('//textarea[not(@readonly)]') 
textarea.send_keys('test') 

Но если попробовать этот код

text_fields = driver.find_elements_by_xpath('//*[input[@type="text"] or textarea[not(@readonly)]]') 
for field in text_fields: 
    field.send_keys('test') 

я selenium.common.exceptions.WebDriverException: Message: unknown error: cannot focus element

P.S. Добавление field.click() перед отправкой текста или с использованием ActionChains не удалось решить проблему. Кроме len(text_fields) возврата 2, так что оба элемента правильно согласованы с XPath

ответ

0

Второе выражение возвращает родительский элемент input или textarea. Если вы хотите получить как в одном XPath тогда:

text_fields = driver.find_elements_by_xpath("//input[@type='text'] | //textarea[not(@readonly)]") 
for field in text_fields: 
    field.send_keys('test') 

Или с селектором CSS:

text_fields = driver.find_elements_by_css_selector("input[type='text'] , textarea:not([readonly])") 
for field in text_fields: 
    field.send_keys('test') 
+0

Вот оно! большое спасибо – Andersson

Смежные вопросы