Size: a a a

QA — Автоматизация

2020 February 03

PN

Pavel Nazimok in QA — Автоматизация
Могу ли я в Selenium иметь 2 подряд explicit wait'а? Столкнулся с тем, что в таком случае второй как будто бы игнорируется и не выполняется. Если я уберу первый, то второй отрабатывает, как ожидается. В чём причина?
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("myId")));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("myXpath")));
источник

IE

Ivan Efimov in QA — Автоматизация
Илья Евсеев
SELECT d.* 
From departments d
left join employees e on d.department_id = e.department_id and e.EMPLOYEE_ID is null;
Для тестирования я давно отказался от join. Всегда можно написать sub-queris.
select *
from departments d
where d.department_id in (select department_id from employee where employee_id is null)
В данном примере легко запустить подзапрос и проверить/получить результат с employee_id is null:
select department_id from employee where employee_id is null
Проще читается понятнее для людей не знакомых с join
Шанс сделать ошибку ниже, так как все проверяется...
так же легко меняется условие in => not in, is null => is not null...
источник

ИЕ

Илья Евсеев in QA — Автоматизация
Ivan Efimov
Для тестирования я давно отказался от join. Всегда можно написать sub-queris.
select *
from departments d
where d.department_id in (select department_id from employee where employee_id is null)
В данном примере легко запустить подзапрос и проверить/получить результат с employee_id is null:
select department_id from employee where employee_id is null
Проще читается понятнее для людей не знакомых с join
Шанс сделать ошибку ниже, так как все проверяется...
так же легко меняется условие in => not in, is null => is not null...
Была просьба подкинуть идеи как решить задачу на джоинах.
источник

IE

Ivan Efimov in QA — Автоматизация
в тестировании они не нужны - я решил для себя)
источник

IE

Ivan Efimov in QA — Автоматизация
пример сложного запроса на subqueries без join
хотите перепишите на join https://pastebin.com/81pN6bYD
источник

IE

Ivan Efimov in QA — Автоматизация
То же относится к distinct. хотите получить уникальные записи одной таблицы селектите две и получаете уникальные записи двух таблиц... Следующий вопрос а сколько дублей в таблице?
Так почему же сразу не использовать group by?
И group by убережет от простых ошибок. когда вы хотите получить уникальные два столбца, а выбрали 3 (distinct сделает group by по трем столбцам, а вы хотели по 2)....
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Pavel Nazimok
Могу ли я в Selenium иметь 2 подряд explicit wait'а? Столкнулся с тем, что в таком случае второй как будто бы игнорируется и не выполняется. Если я уберу первый, то второй отрабатывает, как ожидается. В чём причина?
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("myId")));
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("myXpath")));
Вы уже задавали этот вопрос в 10:35, и даже ответ получили -- совет сделать вторую инициализацию вейтера.
источник

ИЕ

Илья Евсеев in QA — Автоматизация
Ivan Efimov
пример сложного запроса на subqueries без join
хотите перепишите на join https://pastebin.com/81pN6bYD
Скворечник не участвует в специальной олимпиаде.
источник

PN

Pavel Nazimok in QA — Автоматизация
Roman (rpwheeler)
Вы уже задавали этот вопрос в 10:35, и даже ответ получили -- совет сделать вторую инициализацию вейтера.
Этот способ не помогает. И странно, если бы помогал. Этот вейтер используется и в дальнейшем и отрабатывает как ожидается без переинициализации. Проблема возникает только когда 2 вейта идут подряд.
источник

ES

Eugene Stogniy in QA — Автоматизация
Ivan Efimov
Для тестирования я давно отказался от join. Всегда можно написать sub-queris.
select *
from departments d
where d.department_id in (select department_id from employee where employee_id is null)
В данном примере легко запустить подзапрос и проверить/получить результат с employee_id is null:
select department_id from employee where employee_id is null
Проще читается понятнее для людей не знакомых с join
Шанс сделать ошибку ниже, так как все проверяется...
так же легко меняется условие in => not in, is null => is not null...
Join работает быстрее чем сабквери но для тестирования обычно не критично
источник

IE

Ivan Efimov in QA — Автоматизация
Спорно, часто suqueries отлично паралелятся, ну смотрите стоимость плана запроса двух эквивалентных запросов
источник

ES

Eugene Stogniy in QA — Автоматизация
Ivan Efimov
Спорно, часто suqueries отлично паралелятся, ну смотрите стоимость плана запроса двух эквивалентных запросов
как вы представляете паралелизацию сабквери и  квери? насколько я понимаю база сначала выполняет сабквери а только получив результат выполняет основную кверю
источник

IE

Ivan Efimov in QA — Автоматизация
Это зависит от оптимизатора и от СУБД...
источник

IE

Ivan Efimov in QA — Автоматизация
The good thing in sub-queries is that they are more readable than JOINs: that's why most new SQL people prefer them; it is the easy way; but when it comes to performance, JOINS are better in most cases even though they are not hard to read too.
источник

ES

Eugene Stogniy in QA — Автоматизация
Ivan Efimov
The good thing in sub-queries is that they are more readable than JOINs: that's why most new SQL people prefer them; it is the easy way; but when it comes to performance, JOINS are better in most cases even though they are not hard to read too.
Ну это ровно то что я сказал - Join лучше по перформансу так как выполняеться как один запрос плюс играет роль правильная индексация а сабквери - по читабельности
источник

IE

Ivan Efimov in QA — Автоматизация
Да, но не всегда)
источник

ES

Eugene Stogniy in QA — Автоматизация
Ivan Efimov
Да, но не всегда)
Всегда (исключение - неправильная индексация) и возможно NoSQL некоторые
источник

IE

Ivan Efimov in QA — Автоматизация
Зависит от оптимизатора и от субд
источник

ES

Eugene Stogniy in QA — Автоматизация
Ivan Efimov
Зависит от оптимизатора и от субд
не может субКверя выполняться паралельно с основной - физически не может .... Это получиться как "Я ищу в базе понятия не имею что узнаю завтра что я ищу"- для основной квери
источник

AS

Aleksandr Shipovalov in QA — Автоматизация
Eugene Stogniy
не может субКверя выполняться паралельно с основной - физически не может .... Это получиться как "Я ищу в базе понятия не имею что узнаю завтра что я ищу"- для основной квери
само собой не может, саб квери же по сути возвращает ту же таблицу для которой потом выполняется основной запрос
источник