Перейти к содержимому

Фотография

Selenium+Python, вносим данные в форму

Selenium Python данные

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 kor_ser

kor_ser

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Корзун Сергей Виталиевич

Отправлено 13 сентября 2017 - 13:02

Не могу заполнить форму - тег INPUT.

from selenium import webdriver

driver = webdriver.Firefox()
driver.get("http://site_name/login.jspx")
print(driver.find_element_by_xpath(".//*[@id='pt1:content']").is_displayed())
print(driver.find_element_by_xpath(".//*[@id='pt1:content']").is_enabled())
login_form = driver.find_element_by_xpath(".//*[@id='pt1:content']")
login_form.send_keys('test')
driver.find_element_by_xpath(".//*[@id='pt1:cb12']").click()
driver.quit()

страница :

<html>
<body>
<form id="f1" method="POST" action="/login.jspx">
<table>
<tbody>
<tr>
<td  nowrap="" valign="top">
<input id="pt1:сontent" name="pt1" autocomplete="off" type="text">
</td>
</tr>
</tbody>
</table>
<div id="pt1:cb12">
<a href="#" onclick="this.focus();return false">
<span>Войти</span>
</a>
</div>
</form>
</body>
</html>

элемент формы,я так понимаю,находит

команды 

print(driver.find_element_by_xpath(".//*[@id='pt1:content']").is_displayed())

print(driver.find_element_by_xpath(".//*[@id='pt1:content']").is_enabled())

возвращают-TRUE

информацию о кнопках на странице тоже выводит, значит элементы формы доступны.

 

но вот send_keys не срабатывает,

фреймов на странице нет.

 

через Jscript поле заполняется:

driver.execute_script("document.getElementById('pt1:content').value = 'test';")

 

На кнопку нажать тоже не получается.....

 

FF ESR - 52.2.1 

 

Где могут быть грабли ?


  • 0

#2 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 13 сентября 2017 - 13:33

попробовать добавить слип 5000 перед попыткой послать текст

 

может страничка ещё не успеваем до конца догрузиться к моменту посылки текста, ведь driver.get не гарантирует отображение


  • 1

#3 kor_ser

kor_ser

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Корзун Сергей Виталиевич

Отправлено 13 сентября 2017 - 13:43

попробовать добавить слип 5000 перед попыткой послать текст

 

может страничка ещё не успеваем до конца догрузиться к моменту посылки текста, ведь driver.get не гарантирует отображение

пробовал так:

try:
    element = WebDriverWait(driver, 30).until(
        EC.visibility_of_element_located((By.ID, "pt1:content"))
    )

    element.send_keys("test")

finally:
   pass

не помогало, а вот time.sleep(30) - помогло...... хм.... 

 

Спасибо.


  • 0

#4 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 13 сентября 2017 - 13:56

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

 

слип 30 это оверкилл конечно, только для дебага, чтобы удостоверится что вэйта не хватает

 

а вообще слип от секунды до трёх должен помочь


  • 0

#5 kor_ser

kor_ser

    Новый участник

  • Members
  • Pip
  • 3 сообщений
  • ФИО:Корзун Сергей Виталиевич

Отправлено 13 сентября 2017 - 14:14

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

 

слип 30 это оверкилл конечно, только для дебага, чтобы удостоверится что вэйта не хватает

 

а вообще слип от секунды до трёх должен помочь

 читал что:

Худший пример такого кода — это использование команды time.sleep(), которая устанавливает точное время ожидания.

 

пытался использовать явные ожидания...


  • 0

#6 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 14 сентября 2017 - 09:59

 

 

Худший пример такого кода — это использование команды time.sleep(), которая устанавливает точное время ожидания.

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

 

эволюция тестировщика:

1. использует слипы

2. не использует слипы, так как уверен что они "зло"

3. использует слипы правильно


  • 0



Темы с аналогичным тегами Selenium, Python, данные

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных