Как найти веб-элементы в VBA с использованием библиотеки Selenium
Хотите научиться находить веб-элементы на любом веб-сайте в VBA с использованием Selenium? Этот блог обязательно поможет вам научиться этому. Итак, приступим.
Введение
В мире веб-автоматизации Selenium стал неотъемлемым инструментом как для тестировщиков, так и для разработчиков. Он позволяет автоматизировать тестирование и взаимодействие с веб-приложениями, что делает его мощным инструментом в области обеспечения качества и веб-разработки.
При работе с Selenium в VBA (Visual Basic for Applications) одним из ключевых понятий, которое следует понять, являются локаторы веб-элементов. Эти локаторы служат мостом между вашим кодом VBA и элементами на веб-странице, с которыми вы хотите взаимодействовать.
Для практики и запуска приведенного ниже кода вам необходимо установить библиотеку Selenium Type в VBA. Для этого следуйте инструкциям в блоге Как установить Selenium Webdriver для VBA в Windows.
После успешной установки Selenium и ChromeDriver для VBA используйте следующий код для создания нового объекта Chrome webdriver и открытия веб-сайта https://www.kushalstudy.com/.
Sub OpenBrowser()
Dim driver As New WebDriver
driver.Start "chrome"
driver.Get " https://www.kushalstudy.com/"
End Sub
Методы для поиска веб-элементов
Локаторы веб-элементов - это в основном указатели или идентификаторы, которые помогают Selenium находить и взаимодействовать с конкретными элементами на веб-странице. Эти элементы могут быть кнопками, полями ввода, ссылками, флажками или любыми другими элементами HTML. Поскольку веб-страницы структурированы с использованием HTML, каждому элементу присваиваются различные атрибуты, которые можно использовать для их уникальной идентификации.
Существует несколько типов локаторов, которые можно использовать для нахождения элементов:
1. Локатор по идентификатору (ID)
HTML-элемент может иметь атрибут id, который является уникальным на странице. Это делает его очень надежным локатором. В VBA вы можете использовать метод FindElementById() для поиска элементов по их идентификатору.
Пример: Мы хотим найти элемент, у которого есть идентификатор с атрибутом main, как показано на изображении ниже.
Код VBA для извлечения внутреннего HTML внутри этого элемента выглядит следующим образом:
Dim allHtml As String
allHtml = driver.FindElementById("main").Attribute("innerHTML")
2. Локатор по имени
Если элементы имеют атрибут name, вы можете использовать этот атрибут для их поиска. В VBA вы бы использовали метод FindElementByName().
'Найти элемент по имени и добавить некоторый текст
driver.FindElementByName("name").SendKeys "myusername"
Для поиска нескольких элементов с использованием атрибута name используйте метод FindElementsByName().
driver.FindElementsByName("name")
3. Локатор по имени класса
Элементы с атрибутом class могут быть найдены с использованием этого локатора. Метод FindElementByClassName() может быть использован для поиска элементов с использованием этого метода.
Dim blogTitle As String
blogTitle = driver.FindElementByClass("wp-block-post-title").Attribute("innerText")
Если вы хотите получить несколько элементов с одним и тем же именем класса, вы можете использовать метод FindElementsByClassName(), как показано в следующем коде:
driver.FindElementsByClass("wp-block-post-title")
4. Локатор по имени тега
Этот локатор находит элементы по их HTML тегу, таким как div, input, a и т.д. В VBA вы можете использовать метод FindElementByTagName() для поиска элементов.
Dim blogTitle As String
blogTitle = driver.FindElementByTag("h5").Attribute("innerText")
Если вы хотите получить несколько элементов с одним и тем же именем тега, вы можете использовать метод FindElementsByTagName(), как показано в следующем коде:
driver.FindElementsByTag("h5")
5. Локатор XPath
XPath (XML Path Language) - это мощный язык, используемый для навигации по XML-документам. В Selenium вы можете использовать выражения XPath для поиска элементов на основе их атрибутов и отношений в структуре HTML. Используйте метод FindElementByXPath() для поиска элемента.
Dim blogTitle As String
blogTitle = driver.FindElementByXPath("//h5[contains(@class, 'wp-block-post-title')]").Attribute("innerText")
Если вы хотите получить несколько элементов с одним и тем же именем XPath, вы можете использовать метод FindElementsByXPath(), как показано в следующем коде:
driver.FindElementsByXPath("//h5[contains(@class, 'wp-block-post-title')]")
6. Локатор CSS Selector
Аналогично XPath, CSS селекторы используются для выбора элементов на основе их атрибутов и отношений, но с использованием синтаксиса CSS. Используйте метод FindElementByCss() для поиска элемента.
Dim blogTitle As String
blogTitle = driver.FindElementByCss("h5[class*='wp-block-post-title']").Attribute("innerText"
Если вы хотите получить несколько элементов с одним именем CSS, вы можете использовать метод FindElementsByCss(), как показано в следующем коде:
driver.FindElementsByCss("h5[class*='wp-block-post-title']")
Различные методы взаимодействия с элементами
При использовании Selenium с VBA для взаимодействия с веб-элементами вы можете использовать различные методы для выполнения действий, таких как нажатие кнопок, ввод текста, получение атрибутов элемента и многое другое. Вот список часто используемых методов и свойств для взаимодействия с элементами: