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

Практикум по тест-дизайну 2.0
онлайн, начало 29 ноября
Тестирование мобильных приложений
онлайн, начало 27 ноября
Автоматизатор мобильных приложений
онлайн, начало 27 ноября
Программирование на Python для тестировщиков
онлайн, начало 22 ноября
Фотография

Найти элемент после его добавления

webdriver python selenium

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

#1 andreykou

andreykou

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 29 Август 2016 - 05:25

Привет всем,

 

У меня такая ситуация. 

Я добавляю на свою страницу к примеру, новость.

После добавления новости, новость появляется на сайте.

Как я могу убедится что новость была добавлена?

У меня нет информации элемента, а именно class name или id name.

 

Спасибо всем за ответы!


  • 0

#2 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 29 Август 2016 - 07:06

По заголовку новости? Добавляй туда дату и время, а потом проверяй, что она есть в заголовке. Или удаляй новость с каким то определенным заголовком из БД/ через интерфейс админки перед началом теста или в конце , потом добавляй с таким же и проверяй , что появилось
  • 0

#3 andreykou

andreykou

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 29 Август 2016 - 07:42

По заголовку новости? Добавляй туда дату и время, а потом проверяй, что она есть в заголовке. Или удаляй новость с каким то определенным заголовком из БД/ через интерфейс админки перед началом теста или в конце , потом добавляй с таким же и проверяй , что появилось

Я добавляю заголовок в новость (текст заголовка находится в файле):

 

browser.xpath("//input[@class='bs3-form-control']").click()
fl = open("/home/andrey/PycharmProjects/test/vspgroup.local/forTest/news/forHeader.txt").read().decode('utf8')
browser.find_element_by_xpath("//input[@class='bs3-form-control']").send_keys(fl)

 

потом сохраняю и ищу по заголовку:

 

try:
browser.find_element_by_link_text(fl)
pass
except Exception as d:
print ("Problem with news", format(d))

 

проблема что пишет ошибку:

 

UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff'


  • 0

#4 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 29 Август 2016 - 08:29

ну это опять что то с кодировкой у тебя . попробуй через u"строка"


  • 0

#5 andreykou

andreykou

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 29 Август 2016 - 08:33

ну это опять что то с кодировкой у тебя . попробуй через u"строка"

 

Вопрос если find_element_by_link_text ищет только линки или текст тоже.....


  • 0

#6 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 29 Август 2016 - 08:41

он ищет текст в которой есть есть тег <a>, то есть гиперссылку.

Ты можешь искать этот элемент через xpath

"//div(text()=" + fl + ")"

ну или через .format() подставлять переменную


  • 1

#7 andreykou

andreykou

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 29 Август 2016 - 10:16

он ищет текст в которой есть есть тег <a>, то есть гиперссылку.

Ты можешь искать этот элемент через xpath

"//div(text()=" + fl + ")"

ну или через .format() подставлять переменную

 

Спасибо получилось написал  чуть чуть по другому, но думаю идея таже:

 

try:
browser.find_element_by_xpath("//*[text()='%s']" % fl)
except Exception as d:
print ("Problem with news", d.message)


  • 0

#8 andreykou

andreykou

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 29 Август 2016 - 11:36

он ищет текст в которой есть есть тег <a>, то есть гиперссылку.

Ты можешь искать этот элемент через xpath

"//div(text()=" + fl + ")"

ну или через .format() подставлять переменную

 

Вопрос....

А если после того как я нашёл элемент я хочу в той же строке сделать click(), это должно выглядеть примерно так?

 

browser.find_element_by_xpath("//*[text()='%s']/i[@class='fa fa-1-5x']" %fl).click()

 

но в этом случаи он ругается.....

поможет ли в этой ситуации switch_to?


  • 0

#9 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 29 Август 2016 - 12:08

какую ошибку отдает в консоль ?

сделай через format или через + и все будет работать.


  • 0

#10 andreykou

andreykou

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 29 Август 2016 - 12:25

какую ошибку отдает в консоль ?

сделай через format или через + и все будет работать.

 

С этим я разобрался, но после добавления новости появляется строка, где я могу нажать на кнопку и отредактировать новость.

Но я хочу отредактировать ту новость, которую я добавил.

Так я в начале ищу эту новость и так же я ищу кнопку по class и делаю click()

Но это действие выкидывает ошибку:

 

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"xpath","selector":"//*[text()='Test Text test test test']/i[@class='fa fa-1-5x']"}
Stacktrace:
    at FirefoxDriver.prototype.findElementInternal_ (file:///tmp/tmpzpiVtp/extensions/fxdriver@googlecode.com/components/driver-component.js:10770)
    at FirefoxDriver.prototype.findElement (file:///tmp/tmpzpiVtp/extensions/fxdriver@googlecode.com/components/driver-component.js:10779)
    at DelayedCommand.prototype.executeInternal_/h (file:///tmp/tmpzpiVtp/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_ (file:///tmp/tmpzpiVtp/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.prototype.execute/< (file:///tmp/tmpzpiVtp/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
 
 
Я как бы хочу найти элемент внутри элемента, как бы вот так может------> browser.find_element_by_xpath("//*[text()='%s']" % fl ).find_element_by_xpath("//i[@class='fa fa-1-5x']").click()
Но опять же токая запись делает мне ошибку.

  • 0

#11 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 29 Август 2016 - 13:12

нужно смотреть HTML


  • 0

#12 andreykou

andreykou

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

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Андрей Куриленко

Отправлено 01 Сентябрь 2016 - 06:13

Получилось если кому надо:

 

browser.xpath("//*[text()='%s']/parent::tr/td/span/i[@class='fa fa-1-5x']" % fl).click()


  • 0

#13 the0

the0

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

  • Members
  • Pip
  • 47 сообщений
  • ФИО:Сергей


Отправлено 05 Сентябрь 2016 - 17:38

Если вам без разницы, какое будет имя у новости, вам просто нужно проверить функционал, то:
 

news = "Тестовая новость" + strftime("%H:%M:%S", gmtime())
wd.find_element_by_id("News_announsment")).send_keys(news)
wd.find_element_by_xpath("//input[@value='Submit']")).click()
assert news in wd.find_element_by_xpath("element").text

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

  • 0

Основательный подход



Программирование на С# для тестировщиков
онлайн
Автоматизатор мобильных приложений
онлайн
Selenium WebDriver: полное руководство
онлайн
Программирование на Python для тестировщиков
онлайн




Темы с аналогичным тегами webdriver, python, selenium

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

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

Яндекс.Метрика
Реклама на портале