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

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

Авторизация и вывод первых 5 сообщений Python

Python

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

#1 Deon

Deon

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий

Отправлено 26 Декабрь 2016 - 13:42

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
import time

driver = webdriver.Chrome(executable_path="C:\Python35\chromedriver.exe")
#driver = webdriver.Firefox(executable_path = "C:\geckodriver.exe")

driver.get("https://directum.adm.yar.ru/Login.aspx") # Запускает браузер
#time.sleep(10) Ждет 10 сек

# Ввод логина
login = driver.find_element_by_id("sLogin")
login.clear()
login.send_keys("login")

# Ввод пароля
pswd = driver.find_element_by_id("sPwd")
pswd.send_keys("pswd")

# Жмем войти
driver.find_element_by_id("btnLogin").click()

time.sleep(2) # Ждет загрузки браузера

button=driver.find_element_by_tag_name('button')
button.send_keys(Keys.ENTER)

time.sleep(5) # Ждет загрузки браузера

# Получаем новую страницу
driver_new = driver.current_url
print('Новая страница: ', driver_new)
driver.get(driver_new)


########

try:
    unread = driver.find_element_by_class_name('under')
    print(unread.text)
except NoSuchElementException:
    print('Нет новых писем')

completed=driver.find_element_by_class_name('completed');

print(completed.text)

 ​А от с этого места ####### загвоздка, under класс нового письма, completed класс выполненного, есть еще прочтенное письмо у которого нет отдельного класса, но у всех у них есть класс Job_obj. Вопрос как сделать так чтобы выводилось первые 5 сообщений и при этом както обозначался их статус

 

с Python на вы с селениумом знаком в общих чертах

форум поискал нужного не нашел 

в гугле забанен

 


  • 0

#2 baxatob

baxatob

    Опытный участник

  • Members
  • PipPipPipPip
  • 258 сообщений
  • ФИО:Юрий
  • Город:Riga

Отправлено 28 Декабрь 2016 - 14:37

Скорее всего можно делать поиск по xpath и сразу отбирать необходимые письма. 

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

 

И смысл этой операции не очень понятен:

# Получаем новую страницу
driver_new = driver.current_url
print('Новая страница: ', driver_new)
driver.get(driver_new)

По сути ты просто перезагружаешь страницу тут.

 

 

P.S. Разбанил тебя в гугле  :victory:


  • 0

#3 Deon

Deon

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий

Отправлено 28 Декабрь 2016 - 18:22

Скорее всего можно делать поиск по xpath и сразу отбирать необходимые письма. 

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

 

И смысл этой операции не очень понятен:

# Получаем новую страницу
driver_new = driver.current_url
print('Новая страница: ', driver_new)
driver.get(driver_new)

По сути ты просто перезагружаешь страницу тут.

 

 

P.S. Разбанил тебя в гугле  :victory:

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

<div id="ctl00_MainContent_FolderContent" class="object_contents auto_load" data-component="FolderContents">
    <div id="12110850" kind="Job" class="List folder_item  completed Job_obj">
        <div class="content w100">
            <h2>
                <div col="NAME" class="objectname" onclick="cancelBubble(event); return DoFirstAction(this, 'Job');">
                    &gt;&gt; ВХ.22-3231/16 Исполнитель: Попова М.Ю. (Отв) - Для исполнения.
                </div>
            </h2>
            <div class="addreq">
                <span>
                    <span class="AddText">Создано: 28.12.2016 12:11</span>
                    <span class="AddText">Срок: 09.01.2017</span>
                    <span class="AddText">Инициатор: Попова Марина Юрьевна</span>
                </span>
                <div class="actions"></div>
            </div>
        </div>
    </div>
    <div id="12108967" kind="Job" class="List folder_item  completed Job_obj  even">
        <div class="content w100">
            <h2>
                <div col="NAME" class="objectname" onclick="cancelBubble(event); return DoFirstAction(this, 'Job');">
                    &gt;&gt; ВХ.01-11097/12 Исполнитель: Серова Ю.И. (Отв) - Для организации исполнения мероприятий Концепции и подготовки информации в адрес ДО ежегодно.</div>
            </h2>
            <div class="addreq">
                <span>
                    <span class="AddText">Создано: 28.12.2016 10:47</span>
                    <span class="AddText">Срок: 28.12.2016</span>
                    <span class="AddText">Инициатор: Петрушова Елена Геннадьевна</span>
                </span>
                <div class="actions"></div>
            </div>
        </div>
    </div>
</div>

интирисуют именно классы completed Job_obj under, Job_obj это общий класс для всех писем, completed выполненый, under это новое письмо, и по xpath тяжело тут искать, а по классу не могу понять как сделать общий список из 5 первых писем и подписать их какие новые какие нет


  • 0

#4 baxatob

baxatob

    Опытный участник

  • Members
  • PipPipPipPip
  • 258 сообщений
  • ФИО:Юрий
  • Город:Riga

Отправлено 29 Декабрь 2016 - 11:47

А в чем сложность поиска по xpath?

 

Например, для всех completed писем: 

//div[@class[contains(.,"completed Job_obj")]]

Ну и дальше вниз по дереву собирай, что нужно.


  • 0

#5 Deon

Deon

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий

Отправлено 29 Декабрь 2016 - 13:30

А в чем сложность поиска по xpath?

 

Например, для всех completed писем: 

//div[@class[contains(.,"completed Job_obj")]]

Ну и дальше вниз по дереву собирай, что нужно.

сложность в том что этот див вложен во множество дивов и ячеек таблиц и наверное проще всетаки по классу искать, а и мне нужен не только completed но и там также появляются письма с классом  unread

вот и хочу узнать как бы мне получить масив из первых 5 писем с классом Job_obj и в них сделать проверку и подписать какой из них unread какой completed а какой просто even 
 


  • 0

#6 baxatob

baxatob

    Опытный участник

  • Members
  • PipPipPipPip
  • 258 сообщений
  • ФИО:Юрий
  • Город:Riga

Отправлено 29 Декабрь 2016 - 13:47

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

//div[@class[contains(.,"Job_obj")]]

Потом сделать срез первых 5 элементов и уже в этом срезе выполнить проверку признаков unread, completed, even.

 

 

 

сложность в том что этот див вложен во множество дивов и ячеек таблиц

 

Так xpath именно для того и нужен, чтобы сделать путешествие по дереву тэгов простым и приятным.


  • 0

#7 Deon

Deon

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

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий

Отправлено 04 Январь 2017 - 11:53

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

//div[@class[contains(.,"Job_obj")]]

Потом сделать срез первых 5 элементов и уже в этом срезе выполнить проверку признаков unread, completed, even.

 

 

 

сложность в том что этот див вложен во множество дивов и ячеек таблиц

 

Так xpath именно для того и нужен, чтобы сделать путешествие по дереву тэгов простым и приятным.

 

 

и можешь для особоодаренных разъяснить эту строчку: "//div[@class[contains(.,'unread')]]"

я так ее понимаю что ищем див класc которого содержит unread, но вот зачем ., и в документации не где не написано про contains 


  • 0


Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




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

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

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

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