Sobes.tech
Junior

Как ще намерите локаторите за елементите на уеб страницата?

sobes.tech AI

Отговор от AI

За локализиране на елементи използвам следните подходи, започвайки с най-надеждните:

  1. По ID: Уникален идентификатор на елемента. Най-стабилният вариант, ако ID е зададено от разработчиците.

    # Търсене на елемент по ID
    driver.find_element(By.ID, "element_id")
    
  2. По клас (име на клас): Търсене по стойността на атрибута class. Може да бъде по-малко уникално от ID.

    # Търсене на елемент по име на клас
    driver.find_element(By.CLASS_NAME, "element_class")
    
  3. По CSS селектор: Мощен инструмент, който позволява намиране на елементи по различни атрибути, структура на DOM, псевдокласове и др. Гъвкавост, сравнима с XPath, но синтаксисът е по-опростен и изпълнението по-бързо.

    # Търсене на елемент по CSS селектор
    driver.find_element(By.CSS_SELECTOR, "div.container > button[type='submit']")
    
  4. По XPath: Език за заявки за търсене на възли в XML документ (включително HTML). Позволява намиране на елементи по тяхното положение в DOM, атрибути, текстове. Добро за търсене на елементи без уникални ID/класове или за навигация по родителски/дъщерни елементи. Може да е по-малко ефективно от CSS селектори.

    # Търсене на елемент по XPath
    driver.find_element(By.XPATH, "//div[@class='form']//input[@name='password']")
    
  5. По име на таг (Tag Name): Търсене на всички елементи с определен таг. Рядко се използва за локализиране на конкретен елемент, по-често за получаване на списък.

    # Търсене на всички div елементи
    driver.find_elements(By.TAG_NAME, "div")
    
  6. По текст на линка (Link Text/Partial Link Text): Специално за <a> елементи (линкове).

    # Търсене на линк по точен текст
    driver.find_element(By.LINK_TEXT, "Кликнете тук")
    
    # Търсене на линк по частичен текст
    driver.find_element(By.PARTIAL_LINK_TEXT, "Кликнете")
    
  7. По име (Name): Търсене по стойността на атрибута name. Често използвано за полета във формуляри.

    # Търсене на елемент по атрибут name
    driver.find_element(By.NAME, "username")
    

При избор на локатор следвам следните принципи:

  • Уникалност: Локаторът трябва да идентифицира уникално желания елемент.
  • Стабилност: Избирам локатори, които е най-малко вероятно да се променят при промени в дизайна или структурата на страницата (предпочитам ID и атрибути, а не позиционен XPath).
  • Четливост и поддръжка: Локаторът трябва да е разбираем.

При използване на CSS селектори или XPath се опитвам да избягвам зависимости от дълбоко или абсолютното вложение в структурата на DOM, предпочитам да търся елементи спрямо най-близкия уникален родител или по техните собствени атрибути. Използвам DevTools на браузъра за инспекция на DOM и отстраняване на локализатори.