Показаны сообщения с ярлыком Xpath. Показать все сообщения
Показаны сообщения с ярлыком Xpath. Показать все сообщения

суббота, 24 октября 2020 г.

Использование переменной в локаторе (XPATH).

Нужно проверить правильная ли цена отображается на сайте.

Переменная var будет разной в зависимости от продукта (или региона, например). 

Мы можем использовать данную функцию для поиска и проверки всех цен, меняется только  expected_price и var.


@allure.step("Check that price is correct")
def is_price_correct(driver, expected_price, var):
price_locator = (
By.XPATH,
'//div[@id="buySASub1"]//span[contains(@data-type, "upgrade")
         and contains(@data-tier, "'+var+'")]'
)
return is_element_price_correct(driver, expected_price, price_locator)

пятница, 23 октября 2020 г.

Описание XPath с помощью Contains

 Contains примеры:


1) Класс

//a[contains(@class, 'product-formatted-price')



2) Текст


a[contains(text(),"Get")]



3) Ссылку


//a[contains(@class, 'product-purchase') and contains(@href, '" + Config.ps_base_url + "')]



4) ID


//div[contains(@id,"content")]



5) Другие (data-type...)


//span[contains(@data-type, 'no')]



6) Содержит сразу 2 условия


//span[contains(@data-type, 'no') and contains(@data-time, '0')]



7) Описать элемент, который находится внутри секции buySub1


//div[@id="buySub1"]//span[contains(@data-type, 'no') and contains(@data-tier, '0')]

воскресенье, 10 мая 2020 г.

Написать XPATH для нахождения родительского элемента



XPATH к элементу div через его child

//select[@name='category']/..



Элемент определяем так:

locator = (By.XPATH, "//select[@name='category']/..")
element = HtmlElement(driver, locator)
Предположим мы должны проверить видимоcть этого эелемента:
return hero_subtitle.is_element_visible()

Итого, функция будет выглядеть так:

@allure.step("Check that element is visible") def is_element_visisble(driver): locator = (By.XPATH, "//select[@name='category']/..") element = HtmlElement(driver, locator) return element.is_element_visible()


Описываем класс HtmlElement (лучше в отдельном файле и использовать его в разных тестах):

class HtmlElement:
    def __init__(self, driver, locator):
        self.driver = driver  # type: WebDriver        self.element_locator = locator


    def is_element_visible(self, timeout=30):
        wait = WebDriverWait(self.driver, timeout)
        try:
            wait.until(expected_conditions.visibility_of_element_located(self.element_locator))
        except TimeoutException:
            return False        return True
ПРИМЕР 2
//a[text()='Sm___']/..//a[text()='Get Started']



Чтобы найти кнопку Get Started описываем сначала a с текстом "Sm...". (//a[text()='Sm___'])
Дальше переходим вверх к родительскому элементу (/..).
Спускаемся вниз к дочернему элементу с текстом 'Get Started' (//a[text()='Get Started'])

четверг, 7 мая 2020 г.

"\" (Backslash) - его некоторые полезные функции в Python


Обрытный слэш поможет в следующих ситуациях:

1.

Нужно использовать " или ' или \ как часть текста   \' , \" , \\


Пример:

category_locator = (
    By.XPATH,
    '//h2[text()="The New Story \"To Be Here\""]')

Результат:
Будет найден h2 элемент с текстом The New Story "To Be Here".


2. 

Текст надо разделить на 2 строки - \n



Пример:

print("The New Story \n To Be Here"]')

Результат:
Будет напечатан текст 
The New Story
To Be Here

Самые полезные ФУНКЦИИ Пайтона

 1)  PRINT - выводит на печать переменную, указанную в скобках print (average)   2)  LEN - посчитать количество элементов в списке student...