Size: a a a

testing_in_python

2020 December 07

ГК

Глеб Казаркин... in testing_in_python
Привет, подскажите как найти элемент?
есть строки контактов, в которых ячейки, где нужная "edit", выбрать нужно строку по Id
<a href="edit.php?id=187"><img src="icons/pencil.png" title="Edit" alt="Edit"></a>
Попытался так, но выдаёт ошибку не валидный селектор
row = wd.find_element_by_css_selector('a href="edit.php?id=%s"' % id)
источник

СС

Сказочный Сникерс... in testing_in_python
Там есть поиск по link text
источник

СС

Сказочный Сникерс... in testing_in_python
И partial link text
источник

ТЭ

Тачами Экстович... in testing_in_python
Глеб Казаркин
Привет, подскажите как найти элемент?
есть строки контактов, в которых ячейки, где нужная "edit", выбрать нужно строку по Id
<a href="edit.php?id=187"><img src="icons/pencil.png" title="Edit" alt="Edit"></a>
Попытался так, но выдаёт ошибку не валидный селектор
row = wd.find_element_by_css_selector('a href="edit.php?id=%s"' % id)
А в хроме этот селектор работает?
источник

ГК

Глеб Казаркин... in testing_in_python
да, решил вот так:
click_edit = wd.find_element_by_xpath("//*[@id='maintable']/tbody").find_element_by_xpath("//*[@href='edit.php?id=%s']" % id).click()
источник

BK

Boris Krutskih in testing_in_python
всем привет, есть такой тест
    @allure.testcase(url=f"{JIRA}/SOFTQA-557", name="TC 557")
   @pytest.mark.parametrize('urgency', ['1', '2', '3'])
   @pytest.mark.parametrize('replace', [0, 1, 1])
   def test_create_(self, sign_in_as_pm_user, set_config, urgency, replace):
       navigate_to(url[set_config.env] + 'url')

       pm.create_(
           customer=215,
           eq_type='node',
           search_query=node,
           title=f'Auto test title {r}',
           description=f'Auto test description {r}',
           urgency=urgency,
           is_replace=replace
       )
При запуске генерирует 9 тестов комбинированых.
Но мне нужно прогнать всеголишь 3 теста с первой параметризацией используя 2 комбинации.
Т.е. в итоге должно получится 3 теста так же но с разным значением replace. Можете подсказать каким образом я могу так сделать?
Сейчас получается слишком много комбинаций
источник

ИС

Игорь Середа... in testing_in_python
Boris Krutskih
всем привет, есть такой тест
    @allure.testcase(url=f"{JIRA}/SOFTQA-557", name="TC 557")
   @pytest.mark.parametrize('urgency', ['1', '2', '3'])
   @pytest.mark.parametrize('replace', [0, 1, 1])
   def test_create_(self, sign_in_as_pm_user, set_config, urgency, replace):
       navigate_to(url[set_config.env] + 'url')

       pm.create_(
           customer=215,
           eq_type='node',
           search_query=node,
           title=f'Auto test title {r}',
           description=f'Auto test description {r}',
           urgency=urgency,
           is_replace=replace
       )
При запуске генерирует 9 тестов комбинированых.
Но мне нужно прогнать всеголишь 3 теста с первой параметризацией используя 2 комбинации.
Т.е. в итоге должно получится 3 теста так же но с разным значением replace. Можете подсказать каким образом я могу так сделать?
Сейчас получается слишком много комбинаций
Каждое использование parametrize выполняет комбинаторное умножение. Напиши здесь список кейсов, которые тебе нужны, списком, чтобы тебя поняли.
источник

BB

Bad Boy in testing_in_python
Boris Krutskih
всем привет, есть такой тест
    @allure.testcase(url=f"{JIRA}/SOFTQA-557", name="TC 557")
   @pytest.mark.parametrize('urgency', ['1', '2', '3'])
   @pytest.mark.parametrize('replace', [0, 1, 1])
   def test_create_(self, sign_in_as_pm_user, set_config, urgency, replace):
       navigate_to(url[set_config.env] + 'url')

       pm.create_(
           customer=215,
           eq_type='node',
           search_query=node,
           title=f'Auto test title {r}',
           description=f'Auto test description {r}',
           urgency=urgency,
           is_replace=replace
       )
При запуске генерирует 9 тестов комбинированых.
Но мне нужно прогнать всеголишь 3 теста с первой параметризацией используя 2 комбинации.
Т.е. в итоге должно получится 3 теста так же но с разным значением replace. Можете подсказать каким образом я могу так сделать?
Сейчас получается слишком много комбинаций
urgency - будет одинаковое значение?
источник

BK

Boris Krutskih in testing_in_python
Получается должно быть 3 кейса:
1. Создание item с urgency 1, is_replace 0
2. Создание item с urgency 2, is_replace 1
3. Создание item с urgency 3, is_replace 0
источник

СС

Сказочный Сникерс... in testing_in_python
тебе это разово надо?
источник

V

Vasiliy in testing_in_python
@pytest.mark.parametrize('urgency, is_replace', [(1, 0), (2, 1), (3, 0)])
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
тебе это разово надо?
Несовсем понял в каком смысле разово
источник

BK

Boris Krutskih in testing_in_python
Vasiliy
@pytest.mark.parametrize('urgency, is_replace', [(1, 0), (2, 1), (3, 0)])
Щас попробую
источник

СС

Сказочный Сникерс... in testing_in_python
Boris Krutskih
Несовсем понял в каком смысле разово
ну у тебя щас написаны параметризации, 9 штук. ты хочешь сделать конкретные 3. тебе это разово нужно или постоянно? в 1 случае это означает что тебе реально нужны все 9 но вот конкретно в данный момент хочу прогнать (зачем то) исключительно 3. это решается кейвордами запуска. либо тебе не нужны эти 9, тогда решение выше
источник

BK

Boris Krutskih in testing_in_python
Сказочный Сникерс
ну у тебя щас написаны параметризации, 9 штук. ты хочешь сделать конкретные 3. тебе это разово нужно или постоянно? в 1 случае это означает что тебе реально нужны все 9 но вот конкретно в данный момент хочу прогнать (зачем то) исключительно 3. это решается кейвордами запуска. либо тебе не нужны эти 9, тогда решение выше
Вот решение выше как раз то что мне нужно
источник

BK

Boris Krutskih in testing_in_python
Vasiliy
@pytest.mark.parametrize('urgency, is_replace', [(1, 0), (2, 1), (3, 0)])
Спасибо, работает)
источник

GG

Gregory Gruzdov in testing_in_python
если надо составить параметрайз динамически с минимально-возможным  количеством использований каждого параметра(не нужен pairwise), я для себя накидал коротенький метод.
def parametrize_to_use_each_parameter_once(*args):
   """['a', 'b', 'c', 'd'], [1, 2] -> ('a', 1), ('b', 2), ('c', 1), ('d', 1)
   takes lists of differentiating lengths (can be equal though) to make a test table from them,
   so each parameter is used at least once.
   The goal is to achieve the least count of tests, if pairwise testing is not needed.
   Returns a test table in parametrize-ready format"""
   args = [tuple(arg) for arg in args]
   biggest_amount = max(len(arg) for arg in args)
   return zip(*[islice(cycle(arg), biggest_amount) for arg in args])
источник
2020 December 10

DR

Dmitriy Rusanov in testing_in_python
Привет. Пытаюсь перетащить элемент https://simple-drag-drop.glitch.me/ как тут.
Selenium+python. На Selene - не получилось.
Обычные "drang and drop" из документации не работает.
"Click and hold + move to element" - тоже не работает.Вот как пробовал:
 sourceEle = driver.find_element(By.CSS_SELECTOR, 'body > div > div:nth-child(1)')
targetEle = driver.find_element(By.CSS_SELECTOR, 'body > div > div:nth-child(2)')
targetEleXOffset = targetEle.location.get("x")
targetEleYOffset = targetEle.location.get("y")
webdriver.ActionChains(driver).move_to_element(sourceEle).perform()
webdriver.ActionChains(driver).click_and_hold(sourceEle).perform()
webdriver.ActionChains(driver).move_by_offset(targetEleXOffset, targetEleYOffset).perform()
webdriver.ActionChains(driver).move_to_element(targetEle).perform()
webdriver.ActionChains(driver).move_by_offset(targetEleXOffset, targetEleYOffset).perform()
webdriver.ActionChains(driver).release().perform()
Нашел тему https://stackoverflow.com/questions/29982072/how-to-implement-the-selenium-html5-drag-and-drop-workaround-in-python
добавил себе js helper(without using jquery_load_helper.js) - тогда ошибка: jQuery is not defined.
Если попробовать скрипт с jQuery - ничего не происходит просто прокидывает таймаут: Message: Timed out after 30000 ms
Помогите найти любой доступный способ для перетаскивания.
источник

YB

Yasha Boot in testing_in_python
Dmitriy Rusanov
Привет. Пытаюсь перетащить элемент https://simple-drag-drop.glitch.me/ как тут.
Selenium+python. На Selene - не получилось.
Обычные "drang and drop" из документации не работает.
"Click and hold + move to element" - тоже не работает.Вот как пробовал:
 sourceEle = driver.find_element(By.CSS_SELECTOR, 'body > div > div:nth-child(1)')
targetEle = driver.find_element(By.CSS_SELECTOR, 'body > div > div:nth-child(2)')
targetEleXOffset = targetEle.location.get("x")
targetEleYOffset = targetEle.location.get("y")
webdriver.ActionChains(driver).move_to_element(sourceEle).perform()
webdriver.ActionChains(driver).click_and_hold(sourceEle).perform()
webdriver.ActionChains(driver).move_by_offset(targetEleXOffset, targetEleYOffset).perform()
webdriver.ActionChains(driver).move_to_element(targetEle).perform()
webdriver.ActionChains(driver).move_by_offset(targetEleXOffset, targetEleYOffset).perform()
webdriver.ActionChains(driver).release().perform()
Нашел тему https://stackoverflow.com/questions/29982072/how-to-implement-the-selenium-html5-drag-and-drop-workaround-in-python
добавил себе js helper(without using jquery_load_helper.js) - тогда ошибка: jQuery is not defined.
Если попробовать скрипт с jQuery - ничего не происходит просто прокидывает таймаут: Message: Timed out after 30000 ms
Помогите найти любой доступный способ для перетаскивания.
Мак?
источник

DR

Dmitriy Rusanov in testing_in_python
Yasha Boot
Мак?
не понял.  Если про систему, то винда 10
источник