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

Публикации lapa

12 публикаций создано lapa (учитываются публикации только с 24 апреля 2023)


#173716 REST Assured and Bearer token

Отправлено автор: lapa 12 сентября 2019 - 12:42 в Автоматизированное тестирование

 

можно использовать методы из RestAssured вместо того чтобы делать "руками"

 

например боди составлять, и из ответа конкретное поле брать а не перебирать все значения подряд

 

Вот она вся суть русскоязычных форумов. Пишешь что вчера начал что то изучать, что то сделал, хочешь сделать по-другому, но не нашел как. в ответ получаешь: "это нужно делать по-другому". Спасибо, это очень помогло. как я сразу не догадался 

 

поддреживаю :) вам нужно что то типа такого Response response = request.post("http://*********/api/token"); String token = response.getBody().jsonpath().get("token").toString()


так же можно использовать спецификации. то есть прописать restassuredspec в которые добавить ваш токен и в следующиз запросах не писать его

 




#172633 WebdrioverIO не кликает по кнопке

Отправлено автор: lapa 19 июня 2019 - 08:02 в Selenium - Functional Testing

 

В общем, получилось проще - написать на selenium-webdriver..... но вопрос всё еще открыт.... )

const expect = require('chai').expect;
const webdriver = require('selenium-webdriver');
const driver = new webdriver.Builder().forBrowser('chrome').build();
const Key = require('selenium-webdriver');
const By = webdriver.By;

describe('Desktop Login', () => {
    it('Retail', () => {
        driver.get('https://gepur.com').then(async () => {
            await driver.manage().window().maximize();    
            await driver.findElement(By.className('h-account'))
            .then(el => el.click())
            .then(() => driver.findElement(By.id('loginform-email')))
            .then(el => el.sendKeys('login'))
            .then(() => driver.findElement(By.id('loginform-password')))
            .then(el => el.sendKeys('password'))
            .then(() => driver.findElement(By.css('button.btn-basik.btn-sm.btn-black')))
            .then(el => el.click());
            
            await driver.sleep(500);
            let siteUrl = await driver.getCurrentUrl();
            expect(siteUrl).to.equal('https://gepur.com/');
            await driver.quit();
        });        
    });
});

во втором примере вы используете другой локатор потому и сработало. ну и вы используете устаревший подход. сейчас все используют async/await




#172576 WebdrioverIO не кликает по кнопке

Отправлено автор: lapa 12 июня 2019 - 11:05 в Selenium - Functional Testing

Привет. не могу кликнуть по кнопке. Помогите пожалуйста. 

Дано тест:

const assert = require('assert');
 
describe('Desktop login', () => {
    it('Retail login', async () => {
        await browser.setWindowSize(1024, 768);
        await browser.url('https://gepur.com');
        const loginButton = await $('a.h-account');
        await loginButton.click();
        const email = await $('id=loginform-email');
        email.setValue('login');
        const password = await $('id=loginform-password');
        password.setValue('password');
        browser.debug();
        const submitButton = await $('=Войти');
        await submitButton.click();
        browser.pause(3000);
        let url1 = await driver.getUrl()
        browser.pause(3000);
        await assert.equal(url1, 'https://gepur.com/');
        //await loginButton.click();
        //const url = browser.getUrl();
        //await assert.equal(url, 'https://gepur.com/account/show/main');
    });
});

После await submitButton.click(); редиректа на гланую не происходит. кнопка рабочая, руками проверял...... Помогите понять причину пожалуйста )))

селектор не правильный =Войти. Думаю тут ничего не находит

 

можете попробовать что нить вроде const submitButton = await $('[name="login-button"]')




#171311 Как найти элемент, есть только value

Отправлено автор: lapa 15 марта 2019 - 11:21 в Selenium - Functional Testing

Не совсем пойму теперь как мне по нему кликнуть ... такая конструкция получается  

WebElement selectOrganization = driver.findElement(By.id("organization"));
        selectOrganization.getAttribute("EE830A6D-71DC-441E-99E5-E5FC9E0828D1");

А .click не проходит

имхо вы не совсем правильно понимаете.

если хотите кликнуть тогда будет что то вроде selectOrganization.click()

а вот если хотите узнать значение value тогда getAttribute




#171074 Protractor. Click if exists

Отправлено автор: lapa 27 февраля 2019 - 13:11 в Selenium - Functional Testing

protractor.promise.all([
         element(by.cssContainingText('.grid-cols-3', 'Client')).isPresent(),
         element(by.cssContainingText('.grid-cols-3', 'Awaiting')).isPresent(),
    ]).then(function (arr) {
      if (arr.indexOf(true) >= 0) {
             element(by.css('#FinApplication')).click();
        }
    });

ожидаем сразу все промисы, а потом смотрим, если какой-то true, то кликаем

 

5 минут гугления. ну и что что промисы всегда не пустой список, пользуйтесь списком

с точки зрения архитектуры теста, это конечно не айс. ветвлений быть не должно.

 

не читаем но отвечаем, причём с упрёками. ничего нового под луной




#171050 Protractor. Click if exists

Отправлено автор: lapa 26 февраля 2019 - 08:49 в Selenium - Functional Testing

 

А если так?
 
var someButton =  element(by.css(<локатор>));
someButton.isPresent().then(function(result) {
    if ( result ) {
        someButton.click();
    } else {
        element(by.css(<локатор другой кнопки>)).click();
    }
    });
 
п.с.: я протрактор не знаю, промисы погуглила, код выше - по сути из того же гугла.

 

а так устаревший подход :((( депрекейтед способ :(((




#171046 Protractor. Click if exists

Отправлено автор: lapa 26 февраля 2019 - 06:34 в Selenium - Functional Testing

 

 

Альтернативный вариант:
if (driver.findElements(<локатор первого элемента>).size() > 0) {
     <какие-нибудь ожидания, если нужно>
     driver.findElement(<локатор первого элемента>).click();
} else driver.findElement(<локатор второго элемента>).click();
 
п.с.: findElements эксепшенов не кидает, если ничего не нашел, просто возвращает пустой List, поэтому try/catch тут не требуется.

protractor не java, там typescript

 

А благородному дону не все ли равно из какого языка программирования вызывать Selenium? (Вариант ответа пятый, первый цензурный)

 

в том то ии дело что не всё равно. погуглите про промисы в протракторе




#171034 Protractor. Click if exists

Отправлено автор: lapa 25 февраля 2019 - 14:03 в Selenium - Functional Testing

Альтернативный вариант:

if (driver.findElements(<локатор первого элемента>).size() > 0) {

     <какие-нибудь ожидания, если нужно>

     driver.findElement(<локатор первого элемента>).click();

} else driver.findElement(<локатор второго элемента>).click();

 

п.с.: findElements эксепшенов не кидает, если ничего не нашел, просто возвращает пустой List, поэтому try/catch тут не требуется.

protractor не java, там typescript




#171029 Protractor. Click if exists

Отправлено автор: lapa 25 февраля 2019 - 11:33 в Selenium - Functional Testing

Банально же кликаете по первому элементу и ловите эксцепшен. Поймали NoElementException или как он там называется - клацайте по второму.

другого способа нет?




#170990 Protractor. Click if exists

Отправлено автор: lapa 22 февраля 2019 - 07:51 в Selenium - Functional Testing

Подскажите как вообще проверить что элемент видим. То есть я хочу кликнуть на один елемент если он видим, а если нет то на другой. selenium control flow: false. То есть без промизов.




#168694 Увеличить/Уменьшить значение InputBox по MouseClick

Отправлено автор: lapa 27 сентября 2018 - 13:06 в Selenium - Functional Testing

lapa

 

именно это я и хочу сдеать:)

Но стрелки не определены как отделый элемент со своим xpath

Это внутренний "table" для общего элемента Input и попытка просто сделсть Click()

всего лишь фокусирует на общем элементе...

 

я имел ввиду клавиатурные стрелки, что нить вроде такого WebElement.sendKeys(Keys.DOWN);




#168690 Увеличить/Уменьшить значение InputBox по MouseClick

Отправлено автор: lapa 27 сентября 2018 - 07:53 в Selenium - Functional Testing

можете попробовать не кликать а посылать нажатие стрелки вверх ввниз