Как нажать на кнопку selenium python
Selenium is a tool that provides APIs to automate a web application to aid in its testing. In this article, we discuss the use of Selenium Python API bindings to access the Selenium WebDrivers to click a button by text present in the button. In the following example, we take the help of Chrome. The method used is the find_element_by_link_text() which scrapes the element using the text present. In case there is no such element with the given text attribute, NoSuchElementException is returned.
Ультимативная шпаргалка по Selenium с Python для автоматизации тестирования
Python – один из самых популярных языков для веб-автоматизации с Selenium, поскольку в нем есть упрощенный синтаксис, который позволяет выполнять больше задач за меньшее количество строк кода! Таким образом, Python и Selenium создают идеальную комбинацию для автоматизированного тестирования в вебе.
Начнем с того, что Selenium – это открытый фреймворк, который в основном используется для автоматизации взаимодействия с веб-элементами в AUT (Application Under Test). Наряду с Python, Selenium также поддерживает Java, C#, JavaScript, Ruby и PHP. Однако, по своему опыту скажу, что Python – лучший вариант для веб-автоматизации в комбинации с Selenium.
Все больше разработчиков, как и я в свое время, осваивают Python, который считается третьим по популярности языком, если верить опросу Stack Overflow Developer Survey 2021. Поэтому шпаргалка по Selenium с Python может служить для ознакомления с полезным API для автоматизации веб-сайтов (или веб-приложений).
Если в Selenium вы новичок и вам интересно, что же это такое, мы рекомендуем ознакомиться с нашим руководством What is Selenium?.
В этой статье мы разберемся с модулем в Python, который предоставляет нам функционал Selenium WebDriver. Для установки пакета Selenium WebDriver мы воспользуемся Python Package Index (PyPI). Выполните в терминале следующую команду, чтобы установить Selenium для Python:
Если вы хотите запускать свои сценарии тестирования онлайн с Selenium Grid, воспользуйтесь LambdaTest для автоматизации тестирования.
Эта библиотека Python оборачивает Selenium WebDriver и предоставляет методы для автоматизации целого ряда задач, таких как заполнение форм, вход на сайт, нажатие на кнопки и многое другое. Кроме того, вы можете ознакомиться с руководством по Selenium с Python, в котором подробно рассматриваются неотъемлемые аспекты Selenium Python с точки зрения автоматизации веб-тестирования.
Команды, которые вы увидите в шпаргалке, можно использовать в качестве удобного ресурса для всех, кто играется с Selenium на Python для автоматизации веб-приложений. Если вам нужно краткое описание работы Selenium в Python, ознакомьтесь с руководством, в котором подробно рассматривается архитектура Selenium WebDriver и освещаются неотъемлемые аспекты, связанные с Selenium WebDriver в Python. Итак, давайте начнем нашу шпаргалку!
Импортируем библиотеку Selenium
Перед тем, как начать пользоваться командами Selenium, вам нужно импортировать пакет Selenium WebDriver.
Инициализация дайвера в Python
После загрузки соответствующего драйвера браузера вам необходимо запустить Selenium WebDriver и драйвер браузера (например, ChromeDriver для Chrome, GeckoDriver для Firefox и т.д.).
Для Internet Explorer
Если местоположения драйвера браузера нет в переменной PATH (или если его нет в System Path), нужно добавить следующие аргументы:
executable_path : Путь к вашему веб-драйверу Selenium (бинарный файл)
options : Параметры, касающиеся выполнения веб-браузеров
Настройка параметров Selenium WebDriver
Класс Options в Selenium обычно используется в сочетании с желаемыми возможностями кастомизации Selenium WebDriver.
Так вы можете выполнять различные операции, такие как открытие браузера (Chrome, Firefox, Safari, IE, Edge и т.д.) в режиме увеличения, включение и отключение расширений браузера, отключение режима GPU, отключение всплывающих окон и многое другое. Поэтому важно хорошо разобраться в этом разделе шпаргалки по Selenium в Python, поскольку так вы сможете решить проблемы автоматизации, связанные с изменением свойств браузера, о которых мы говорили ранее.
Для Chrome
Импорт опций Chrome
2. Инициализация опций Chrome
3. Добавление желаемых возможностей
4.Добавление желаемых возможностей сессии
Для Firefox
Импорт опций Firefox
2. Инициализация опций Firefox
3. Добавление желаемых возможностей
4. Добавление желаемых возможностей сессии
Поиск элемента
В основном локаторы в Selenium (https://www.lambdatest.com/learning-hub/selenium-locators) используются для определения местоположения веб-элементов из DOM. Соответствующие взаимодействия (или действия) в дальнейшем выполняются относительно найденных веб-элементов. Несколько популярных локаторов в Selenium — ID, Name, Link Text, Partial Link Text, CSS Selectors, XPath, TagName и т.д.
Поиск элемента по атрибуту ID
В этом методе поиск элемента в DOM производится по ID. ID уникален для каждого элемента на странице. Таким образом, с помощью ID можно однозначно идентифицировать элемент. Например, ниже показано использование атрибута ID для поиска веб-элементов на странице входа в систему LambdaTest:

Так вы можете воспользоваться атрибутом ID в Selenium:
Поиск элемента по классу CSS
Элементы в HTML DOM еще можно найти по имени класса, который хранится в атрибуте класса HTML-тега. У класса может быть несколько экземпляров, но метод вернет первый элемент с соответствующим классом.

Так можно использовать имя класса для определения местоположения элемента Email Address на странице LambdaTest:
Поиск элемента по имени
Веб-элементы, такие как открывающий тег, имеют связанный с ними атрибут Name. В Selenium есть метод поиска веб-элементов с помощью атрибута NAME. Если у нескольких элементов одинаковое имя, он вернет первое совпадение.
Вот HTML-код, в котором есть элемент ввода имени Name.
Ниже показано использование метода Selenium Python для определения местоположения веб-элемента с помощью атрибута NAME:
Поиск элемента по XPath
XPath использует путь для выбора узлов и определения местоположения необходимого веб-элемента. Метод find_element_by_xpath() используется для поиска соответствующего элемента в документе с помощью XPath. Вы можете почитать руководство по XPath в Selenium, чтобы получить более глубокое представление об использовании XPath для поиска веб-элементов при автоматизации с Selenium.

Ниже показан поиск элемента email с помощью атрибута XPath:
Поиск элемента по тегу
Этот метод используется для поиска и выбора веб-элементов по HTML-тегу. Метод find_element_by_tag_name() используется для поиска таких тегов, как H1, DIV, INPUT и т.д. Если тег встречается несколько раз, он возвращает первый совпадающий.

Ниже показан поиск элемента с email-адресом по тегу:
Поиск элемента по тексту ссылки и частичному тексту ссылки
Этот метод ищет элемент по тексту ссылки (целому или части). При поиске частичного текста ссылки не ищется точное совпадение со строковым значением, поскольку ищется подмножество строк (в тексте ссылки).
Локатор текста ссылок в Selenium и частичного текста ссылок работает только со ссылками текущего веб-приложения.

Ниже показан поиск элемента на странице входа LambdaTest с помощью локатора текста ссылок:
Ниже показан поиск элемента на странице входа LambdaTest с помощью локатора частичного текста ссылок:
Различные методы поиска элементов
Есть два метода, которые могут быть полезны для поиска элементов страницы в сочетании с классом «By» для выбора атрибутов.
Обратите внимание, что нет никакой разницы между методами find_element_by_tag и find_element(By.tag) . По умолчанию метод find_element_by_tag вызывает find_element(By.tag) .
find_element возвращает первый экземпляр из нескольких веб-элементов с определенным атрибутом в DOM. Метод вызывает исключение NoSuchElementException , если ни один элемент не соответствует требуемому локатору. Прочитайте статью о популярных исключениях Selenium, чтобы лучше понять, из-за чего они возникают.
find_elements возвращает список всех экземпляров веб-элементов, соответствующих определенному атрибуту. Список будет пустым, если в DOM нет нужных элементов.
Ниже вы увидите список атрибутов, доступных для класса By :
TAG_NAME = “tag name”
CLASS_NAME = “class name”
LINK_TEXT = “link text”
PARTIAL_LINK_TEXT = “partial link text”
Дальше показан пример использования метода find_element , который использует локатор XPath для поиска нужного веб-элемента:
Открытие ссылки или документа
Перед выполнением любых операций с веб-элементами, присутствующими на странице, важно открыть целевой URL-адрес (или тестовый URL-адрес). Далее вы увидите несколько способов открыть URL-адрес в Selenium с Python:
driver.get(URL)
Метод driver.get() переходит на страницу, которая передается методу в параметре. Selenium WebDriver будет ждать, пока страница не загрузится полностью, после чего он запустит событие «onload» и вернет управление сценарию тестирования. В статье Selenium Waits in Python вы можете найти дополнительную информацию про обработку ожиданий в Selenium.
Обновление страницы
Бывают сценарии, в которых нужно обновлять содержимое страницы. Метод обновления страниц в Selenium WebDriver используется для обновления веб-страниц.
Метод driver.refresh() обновляет текущую веб-страницу. Он не принимает никаких аргументов и не возвращает никаких значений.
Ввод текста в веб-элемент
Метод send_keys() в Python используется для ввода текста в текстовый элемент. Такой текст передается методу в качестве аргумента. Тот же метод можно использовать для имитации нажатия клавиш в любом поле (например, в полях ввода формы).
Пример использования send_keys() , в котором адрес электронной почты передается текстовому элементу на странице регистрации LambdaTest:
Удаление текста в веб-элементе
Метод element.clear() в Selenium используется для удаления текста из полей, таких как поля ввода формы и т.д.
Пример использования метода очистки содержимого поля ввода электронной почты на домашней странице LambdaTest:
Нажатие на веб-элемент
Метод element.click() в Selenium используется для нажатия на элемент, такой как ссылка-якорь, кнопка и т.д.
Вот так с помощью метода click() можно нажать на кнопку на домашней странице LambdaTest:
Перетаскивание веб-элемента
Перетаскивание объектов является одним из широко используемых сценариев в популярных приложениях (или программах), таких как Canvas, Google Drive, Trello, Asana и т.д. Метод drag_and_drop (элемент, цель) в Selenium помогает автоматизировать функционал перетаскивания веб-элементов из источника и переноса их в целевую область (или элемент).
У класса Actions в Selenium есть два метода, с помощью которых вы можете выполнять операции перетаскивания при тестировании кроссбраузерной совместимости. Обязательно ознакомьтесь с нашим подробным руководством, в котором есть информация о том, как выполнять перетаскивание в Selenium.
Вот простой пример использования метода drag_and_drop() :
Выбор опции
Select (элемент) предоставляет полезные методы для взаимодействия с раскрывающимися списками, выбора элементов и многого другого.
Так можно выбрать элемент по индексу:
Вот некоторые вариации выбора нужного элемента с помощью метода select_by_*() :
Метод
Описание
Метод принимает целочисленное значение — индекс опции, которую мы хотим выбрать.
Метод принимает строковое значение и выбирает опцию, в которой есть нужный текст.
Метод принимает строковое значение и выбирает параметр с тем же значением атрибута.
Метод позволяет отменить выбор всех выбранных опций.
Навигация между окнами
Если у вас несколько окон, может потребоваться переключаться между ними перед выполнением действий с веб-элементами из DOM.
driver.switch_to_window(“имя_окна”)
Метод switch_to_window() Selenium WebDriver позволяет переключиться на нужное окно. Дескриптор окна передается в качестве аргумента методу switch_to_window() .
Все последующие вызовы WebDriver теперь применяются к окну в фокусе (или к новому окну после переключения).
driver.window_handles
Свойство window_handles WebDriver возвращает дескрипторы окон. Теперь вы можете использовать метод switch_to_window() для перехода к любому окну из списка window_handles .
driver.current_window_handle
Метод current_window_handle() возвращает дескриптор текущего окна (или окна в фокусе).
Переключение на iFrame
Selenium WebDriver не умеет получать доступ или находить веб-элементы внутри iFrame в контексте главной страницы. Следовательно, вам необходимо переключиться на iFrame, прежде чем обращаться к элементам внутри него.
driver.switch_to_frame(“имя_iframe”)
Метод switch_to_frame() в Selenium Python позволяет менять контекст WebDriver из контекста главной страницы. Также мы можем получить доступ к сабфреймам, добавив между путем и индексом точку.
driver.switch_to_default_content()
Метод позволяет возвращаться обратно к контексту главной страницы.
Обработка всплывающих окон и оповещений
Существует всего три основных типа всплывающих окон и предупреждений, которые обычно используются в веб-приложениях:
Вы можете переключиться на оповещение, отклонить его или принять. Ознакомьтесь нашим подробным руководством по обработке оповещений и всплывающих окон в Selenium. Несмотря на то, что там используется язык C#, основы остаются неизменными!
driver.switch_to.alert
Свойство switch_to.alert в WebDriver возвращает открытый в данный момент объект alert . Вы можете принять его, отклонить, прочитать содержимое или ввести его в командную строку.
alert_obj.accept()
Как только у вас есть дескриптор окна alert (например, alert_obj ), метод accept() поможет вам принять всплывающее окно предупреждения.
alert_obj.dismiss()
После того как вы переключились на окно alert (например, alert_obj ), вы можете использовать метод dismiss() , чтобы отклонить всплывающее окно предупреждения.
alert_obj.text()
Этот метод используется для извлечения сообщения из всплывающего окна предупреждения.
Получение кода страницы
Метод page_source() в Selenium WebDriver используется для получения кода страницы.
Навигация по истории браузера
Selenium WebDriver на Python предоставляет несколько функций для перемещения вперед-назад по истории браузера.
driver.forward()
Этот метод позволяет сценариям перемещаться на один шаг вперед по истории браузера.
driver.back()
Этот метод позволяет сценариям перемещаться на один шаг назад по истории браузера.
Обработка Cookie в Selenium
Обработка файлов cookie в Selenium WebDriver является одним из распространенных сценариев, с которым вам, возможно, придется иметь дело при автоматизации. Можно выполнять различные операции, такие как добавление, удаление, получение имени файла cookie и многое другое.
driver.add_cookie()
Этот метод помогает настроить файл cookie для сессии Selenium. Он принимает значения в виде пары ключ-значение.
driver.get_cookies()
Этот метод выводит все доступные файлы cookie для текущей сессии Selenium.
driver.delete_cookie()
Есть возможность удалить определенный файл cookie или все файлы cookie, связанные с текущей сессией Selenium.
Установка размера окна
Настройка тайм-аутов в Selenium WebDriver
Когда браузер загружает страницу, веб-элементы внутри нее могут загружаться через различные промежутки времени. Это может создать сложности при взаимодействии с динамическими элементами, присутствующими на странице.
Если элемент отсутствует в DOM веб-страницы, метод locate вызовет исключение. Ожидания в Selenium позволяют добавлять задержки (в миллисекундах или секундах) между действиями, выполняемыми между загрузкой страницы и поиском требуемого веб-элемента.
Неявное ожидание и явное ожидание — два основных способа добавления задержек в код Selenium в Python для обработки динамических веб-элементов на странице.
Неявное ожидание в Selenium Python
Неявное ожидание информирует Selenium WebDriver о необходимости проверять DOM в течение определенного периода времени при попытке найти веб-элемент, который не доступен сразу после загрузки страницы.
По умолчанию неявное ожидание равно нулю. Однако, как только мы определяем его, оно устанавливается на время жизни объекта WebDriver. Ознакомьтесь с подробным руководством, в котором более детально демонстрируется использование неявного ожидания в Selenium Python.
Явное ожидание в Selenium Python
Явное ожидание в Selenium с Python используется, когда мы хотим дождаться выполнения определенного условия, прежде чем продолжить работу.
В Selenium WebDriver есть несколько удобных методов, которые позволяют подождать, пока не будет выполнено определенное условие. Например, явное ожидание можно получить с помощью класса webdriverWait в сочетании с ожидаемыми условиями в Selenium.
Вот некоторые из ожидаемых условий, которые можно использовать в сочетании с явным ожиданием в Selenium Python:
Introduction
Automation is the key to improvement in software engineering, the automobile industry, and the manufacturing industry. Different programming languages and technologies enable the automation process in the software industry, and one such software package is Selenium. Selenium is an open-source framework that automates browser actions and is often used to validate web-based applications across multiple platforms and browsers.
Selenium works with many different programming languages, including Python, Java, and C++. It’s a software suite that puts a diverse collection of tools at your service. Let’s look at a list of tools included in Selenium:
- WebDriver: WebDriver is the collection of APIs that automates the testing of an entire web application. WebDriver supports multiple browsers, including Chrome, Firefox, and Safari, and each browser uses a dedicated WebDriver.
- IDE: Selenium IDE (integrated development environment) provides developers with the facility to write different test cases for automation.
- Selenium RC: RC (remote control) is a framework that allows developers and testers to write testing scripts in multiple programming languages.
- Selenium Grid: Grid enables developers to run multiple test cases in parallel across multiple machines, using smart proxies.
Developers write code in the IDE to connect to different web browsers using web drivers. Once connected using the driver, users can access several web page components like buttons, scroll bars, and other kinds of HTML tags.
Selenium provides different functionalities like scrolling pages, searching for elements in pages, clicking website buttons, etc. In this article, you learn how to use Selenium to click a button on a web page.
Expand Your Test Coverage
Clicking a Button in Selenium
You first need to install the latest version of Selenium WebDriver from this link: https://www.selenium.dev/. Make sure you download the web driver version compatible with your browser. Once you finish downloading it, you need to choose a programming language. For this article, we use the Python language for implementation.
Now that you’re aware of Selenium and its tools for different uses let’s see how you click a button on a web page using Python and Selenium WebDriver. The automation process takes place in four simple steps:
- Import dependencies
- Open browser using Selenium
- Search for and click the button
- Close browser
Import Dependencies
To begin with, you need to import the Python dependencies.
In the above code, you first import WebDriver and then import the select attribute. The Select attribute clicks a button on a webpage.
Open Browser and URL
To go ahead with clicking a button using Selenium, you need to create a WebDriver object. This object opens a web browser and the URL of the web page you want to test. See below for how to open the Chrome web browser (you can use any web browser with its respective web drivers). The URL we’ll use for testing is the official Selenium page, found here.
Once you execute the above code, a Chrome browser window opens where you can see the URL.

Feels like magic, right? Now that you have the URL open in the browser, the next step is to locate the element you want to automate. In this case, it’s the button that you want to click automatically. For this purpose, go to the browser and right-click to see the available options.

After the right-click, you’ll see multiple options; select the last option (i.e., the inspect/inspect-element). The DOM (document object modeling) panel will open on the right side (or sometimes at the bottom of the page).

The elements tab shows all the tags used to create the website on the right-side panel. To select the button you want to click, you can either find the text written on the button (e.g., click here) in the DOM area or click the first option from the element-selection panel, then hover over the button you want Selenium to click. The following result appears:

You’ll see different attributes options like tag name, class name, and so on to help you identify the buttons.
Search and Click the Button
The next step is to help Selenium find the button you want it to click. To find a button, there are multiple options available:
- find_element_by_class_name(): Almost all buttons have a class parameter, and you can use it to find the button.
- find_element_by_id(): This element is not necessarily present in the tags, but if it is, you can use it to find any button.
- find_element_by_tag_name(): This function returns all the tags with the specified name. You then need to filter buttons accordingly.
- find_element_by_xpath(): You can also specify the XPath to find any button.
Some other options are, find_element_by_css_selector(), find_element_by_link_text(), find_element_by_name(), and find_element_by_partial_link_text().
For this tutorial, you’ll see find_element_by_xpath() in action. This is a rather complex option, so if you can understand this option, you’ll manage to use any of the other specified functions very easily. To find the element using XPath, you simply need to call the function through the driver. Let’s see the code for this:
Breaking down the above code, find_element_by_xpath() expects double slashes (//) and then the tag name. Since the tag is href, you need to specify it and then provide it with the href URL that you want to find in the DOM section. Once you execute this line, you get the element information stored in the variable name l.
Next, click the button using the execute_script() function.
After executing the line above, you’re redirected to the page resulting from the button click.

Close Browser
Lastly, after you have your button click mechanism ready, you don’t want to leave the chrome window open. So to close it, you can call the quit() function.
After executing the above line, your browser window closes.
That’s how you create a button click mechanism using Selenium and Python. You can also use Selenium with different programming languages other than Python.
While Selenium is a great option for automating your website testing process, it’s tricky to learn because it has many options and features. Every time you want to test a website, you need to use the tags and other information shown in the DOM. What if I told you there’s a way to automate your testing without all this effort? The Testim team provides solutions for modern-day test automation services with the help of AI. This results in lower maintenance, quality scaling, quick troubleshooting, and expanded test coverage for your website.
Conclusion
After reading this article, you now know about Selenium and how you can use it to automate testing. You learned about components that make Selenium work. Specifically, you learned how you could search for different button elements on a web page and click them using Selenium. You can not only click buttons, but you can also try other features of Selenium, like scrolling a page and clicking hyperlinks.
Every time developers create a website, they need to test it. Manual testing is not an option in today’s world because it takes too much time and too many resources. Selenium is a tool that helps automate your website testing by providing different customization options. You can use it with different browsers and browser versions.
With Selenium, you need to devote some time to learning complex processes. What would be a better option if you want to automate the testing process? Don’t worry, Testim’s got you. You can use Testim to automate the testing process with the help of AI.
python selenium click on button
I am quite new to python selenium and I am trying to click on a button which has the following html structure:
I would like to be able to click both the Search and Reset buttons above (obviously individually).
I have tried a couple of things, for example:
but, I seem to always end up with NoSuchElementException , for example:
I am wondering if I can somehow use the onclick attributes of the HTML to make selenium click?
Any thoughts which can point me in the right direction would be great. Thanks.
9 Answers 9
Remove space between classes in css selector:
download firefox, add the plugin «firebug» and «firepath»; after install them go to your webpage, start firebug and find the xpath of the element, it unique in the page so you can’t make any mistake.
See picture: 
browser.find_element_by_xpath(‘just copy and paste the Xpath’).click()
![]()
For python, use the
open a website https://adviserinfo.sec.gov/compilation and click on button to download the file and even i want to close the pop up if it comes using python selenium
![]()
I had the same problem using Phantomjs as browser, so I solved in the following way:
Essentially I have added the name of the DIV tag into the quote.
The following debugging process helped me solve a similar issue.
You should then have two textfiles with the initial page you were on (‘output_init.txt’) and the page you were forwarded to after clicking the button (‘output_dest.txt’). If they’re the same, then yup, your code did not work. If they aren’t, then your code worked, but you have another issue. The issue for me seemed to be that the necessary javascript that transformed the content to produce my hook was not yet executed.
Your options as I see it:
- Have the driver execute the javascript and then call your find element code. Look for more detailed answers on this on stackoverflow, as I didn’t follow this approach.
- Just find a comparable hook on the ‘output_dest.txt’ that will produce the same result, which is what I did.
- Try waiting a bit before clicking anything:
xpath2 = «your xpath that you are going to click on»
WebDriverWait(driver, timeout=5).until(lambda x: x.find_element_by_xpath(xpath2))
The xpath approach isn’t necessarily better, I just prefer it, you can also use your selector approach.