ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows

1. InstallationΠ’ΒΆ

1.1. IntroductionΠ’ΒΆ

Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

Selenium Python bindings provide a convenient API to access Selenium WebDrivers like Firefox, Ie, Chrome, Remote etc. The current supported Python versions are 3.5 and above.

This documentation explains Selenium 2 WebDriver API. Selenium 1 / Selenium RC API is not covered here.

1.2. Installing Python bindings for SeleniumΠ’ΒΆ

You may consider using virtualenv to create isolated Python environments. Python 3 has venv which is almost the same as virtualenv.

You can also download Python bindings for Selenium from the PyPI page for selenium package. and install manually.

1.3. Instructions for Windows usersΠ’ΒΆ

1.4. Installing from Git sourcesΠ’ΒΆ

To build Selenium Python from the source code, clone the official repository. It contains the source code for all official Selenium flavors, like Python, Java, Ruby and others. The Python code resides in the /py directory. To build, you will also need the Bazel build system.

Currently, as Selenium gets near to the 4.0.0 release, it requires Bazel 3.2.0 (Install instructions), even though 3.3.0 is already available.

To build a Wheel from the sources, run the following command from the repository root:

1.5. DriversΠ’ΒΆ

Failure to observe this step will give you an error selenium.common.exceptions.WebDriverException: Message: Π²Π‚Β˜geckodriverΠ²Π‚™ executable needs to be in PATH.

Other supported browsers will have their own drivers available. Links to some of the more popular browser drivers follow.

Chrome:https://sites.google.com/chromium.org/driver/
Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox:https://github.com/mozilla/geckodriver/releases
Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

For more information about driver installation, please refer the official documentation.

1.6. Downloading Selenium serverΠ’ΒΆ

The Selenium server is only required if you want to use the remote WebDriver. See the Using Selenium with remote WebDriver section for more details. If you are a beginner learning Selenium, you can skip this section and proceed with next chapter.

Selenium server is a Java program. Java Runtime Environment (JRE) 1.6 or newer version is recommended to run Selenium server.

If Java Runtime Environment (JRE) is not installed in your system, you can download the JRE from the Oracle website. If you are using a GNU/Linux system and have root access in your system, you can also use your operating system instructions to install JRE.

If java command is available in the PATH (environment variable), you can start the Selenium server using this command:

Replace 2.x.x with the actual version of Selenium server you downloaded from the site.

If JRE is installed as a non-root user and/or if it is not available in the PATH (environment variable), you can type the relative or absolute path to the java command. Similarly, you can provide a relative or absolute path to Selenium server jar file. Then, the command will look something like this:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

НачинаСм Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Selenium Π² Python

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. Selenium WebDriver 3. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows-Selenium WebDriver 3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Selenium WebDriver 3. Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Автоматизация Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ Π½Π°Π±ΠΈΡ€Π°Π΅Ρ‚ всС Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒ ΠΈ Π² настоящСС врСмя появилось ΠΌΠ½ΠΎΠ³ΠΎ инструмСнтов, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, ΠΎΡ‚ «всСмогущих» Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² настоящих Β«ΡˆΠ²Π΅ΠΉΡ†Π°Ρ€ΡΠΊΠΈΡ… Π½ΠΎΠΆΠ΅ΠΉΒ» Π΄ΠΎ узкоспСциализированных ΡƒΡ‚ΠΈΠ»ΠΈΡ‚.

Автоматизация взаимодСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ для тСстирования Π² Ρ…ΠΎΠ΄Π΅ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ( development ), Ρ‚Π°ΠΊ ΠΈ Π½Π° стадии Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ ( production ). Π’Π°ΠΊΠΆΠ΅ автоматизация управлСния Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… источников сСти Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ вас, просто ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ являСтся Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Β«Π±ΠΎΡ‚Ρ‹Β», созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²Π° Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° сайтов ΠΈΠ»ΠΈ процСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ сайта.

Selenium являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… инструмСнтов Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» для управлСния Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ.

Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C #, Java, Perl, PHP ΠΈ Ruby. Однако Π² нашСй ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎ Π΅Π³ΠΎ использованию с Python Π² Windows.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Selenium?

Selenium β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) дСйствия Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с использованиСм всСго лишь Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк ΠΊΠΎΠ΄Π°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚, ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ рСализуСтся Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° содСрТимого Π²Π΅Π±-страниц Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ имитация взаимодСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ с Π΅Ρ‘ элСмСнтами ΠΈ Π΄Π°ΠΆΠ΅ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ особСнностСй чСловСчСского повСдСния.

Π’Π°ΠΊ для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с Β«Π±ΠΎΡ‚Π°ΠΌΠΈΒ», ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ людСй, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ слоТныС спСциализированныС систСмы для распознавания повСдСния, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ воспроизвСсти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ.

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных Π·Π°Π΄Π°Ρ‡, Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Selenium, хотя вСсь ΠΈΡ… список ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π½Π΅ ограничиваСтся ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π½ΠΈΠΆΠ΅:

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

ΠžΡΠ½ΠΎΠ²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Selenium

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Selenium. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ URL:

ПолоТСниС элСмСнтов Π½Π° страницС

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Π°ΠΌ совсСм Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ всё содСрТимоС страницы, Π° лишь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Ρ‘ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… частСй (HTML элСмСнтов). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π½Π°Ρ‡Π°Π»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстополоТСниС Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π½Π°ΠΌ HTML элСмСнта Π½Π° страницС, для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнт Inspect Element ΠΈΠ· состава web developer tools Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Google Chrome.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ нашСй Π·Π°Π΄Π°Ρ‡ΠΈ, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π΅Π³Π° элСмСнта, Π½Π°Π΄ содСрТимым ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. И для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ сСссии Google Chome:

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² контСкстном мСню Β«ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠΎΠ΄Β»

Как Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот инструмСнт для поиска элСмСнтов Π½Π° страницС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС.

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ элСмСнтов, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π°Π΄ Π½ΠΈΠΌΠΈ ΠΈ ΠΈΡ… содСрТимым Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ дСйствия.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ элСмСнтов ΠΈ ΠΈΡ… содСрТимого ΠΏΠΎ id

Если Π·Π½Π°Π΅Ρ‚Π΅ id Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Π²Π°ΠΌ элСмСнта, Ρ‚ΠΎ Π΅Π³ΠΎ со всСм содСрТимым, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ элСмСнтами, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ способом:

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ элСмСнтов ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° name

Аналогично ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ элСмСнтов ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса

И снова, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π°:

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ элСмСнтов ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π΅Π³Π° HTML

Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнты страницы ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚Π΅Π³Π°:

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ элСмСнтов с использованиСм синктаксиса XPath

Как Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Π½Π΅ всС элСмСнты страницы ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² доступ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° find_elements_by_tag_name ΠΊΠΎ всСм элСмСнтам Π½Π° страницС с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ‚Π΅Π³ΠΎΠΌ, Π½Π°ΠΌ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ содСрТимоС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…, Π° лишь ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ.

Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы получСния содСрТимого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ элСмСнта Π½Π° страницС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с использованиСм синтаксиса XPath (языка запросов ΠΊ элСмСнтам XML Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°). Π‘ использованиСм XPath Π²Ρ‹ смоТСтС Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ элСмСнты Π½Π° страницС Π±ΠΎΠ»Π΅Π΅ быстрым ΠΈ эффСктивным способом:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ tag_list Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ содСрТит всС элСмСнты страницы с Ρ‚Π΅Π³ΠΎΠΌ tag Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ attr с установлСнным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ val :

Selenium WebElement

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ основныС ΠΈΠ· Π½ΠΈΡ…:

Selenium WebDriver

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° WebDriver Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ мноТСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ практичСски ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ всС дСйствия, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ.

Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ возмоТности:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π½Π° любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² этом случаС для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° driver это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ установлСно ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Навигация ΠΏΠΎ страницС

Доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ cookie

Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ cookie Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°, с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ содСрТимым:

Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ cookie ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°:

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π² консоли содСрТимоС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° cookie ΠΈΠ· Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ сСссии Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

ИзмСнСниС HTML ΠΊΠΎΠ΄Π° страницы

Если Π²Π°ΠΌ понадобилось ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свойства ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ HTML элСмСнта страницы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ Ρ‚. Π΄. Π’ΠΎ ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Selenium WebDriver для выполнСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ JavaScript ΠΊΠΎΠ΄Π° Π½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ страницС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ свойства элСмСнтов страницы:

Π—Π΄Π΅ΡΡŒ element β€” это элСмСнт страницы, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· описанных Π²Ρ‹ΡˆΠ΅ способов. attr соотвСтствСнно Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ), Π° value β€” Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² с использованиСм ссылок Π½Π° скачиваниС

Допустим Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ» с Π²Π΅Π±-сайта. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ это ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ:

НаТатиС клавиш ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ эмулируСт Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиши «стрСлка Π²Π½ΠΈΠ·Β» ( Keys.ARROW_DOWN ) 3 Ρ€Π°Π·Π°. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ наТатия action.send_keys(Keys.ARROW_DOWN) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ нСбольшой ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (0.1 сСк.).

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° зарСгистрированы ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… клавиш. Π’Π°ΠΊΠΆΠ΅ этот способ примСняСтся для ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ситуаций, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ наТатия клавиш ΠΌΠΎΠ³ΡƒΡ‚ Β«ΠΏΠΎΡ‚Π΅Ρ€ΡΡ‚ΡŒΡΡΒ» Π² процСссС взаимодСйствия с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, страница Π½Π΅ успСла загрузится ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ событий элСмСнтов Π½Π΅ Π±Ρ‹Π»ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½ΠΈ просто Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ зарСгистрированы ΠΈ исполнСны Π² послСдствии.

НаТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ HTML элСмСнты

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ событий наТатия клавиши Tab для пСрСмСщСния ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами Π½Π° страницС, клавиши Space (ΠΏΡ€ΠΎΠ±Π΅Π») для заполнСния checkbox (Ρ„Π»Π°ΠΆΠΊΠΎΠ²), Π° Ρ‚Π°ΠΊΠΆΠ΅ клавиш со стрСлками для пСрСмСщСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡƒΠ½ΠΊΡ‚Π°ΠΌΠΈ Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ мСню.

Π’Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ… Π² элСмСнты Π²Π²ΠΎΠ΄Π° Ρ„ΠΎΡ€ΠΌ

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ наТатия клавиш Π²Π½ΡƒΡ‚Ρ€ΠΈ HTML элСмСнтов Π²Π²ΠΎΠ΄Π° Π² Ρ„ΠΎΡ€ΠΌΡ‹ тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:

Π‘ΠΊΡ€ΠΎΠ»Π»ΠΈΠ½Π³

Иногда Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ части страницы Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π΅Π΅ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π²Π½ΠΈΠ·. НапримСр, ΠΊΠ°Π½Π°Π» Π² Instagram ΠΈΠ»ΠΈ любая другая страница с β€œΠ±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΉβ€ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΎΠΉ (с использованиСм AJAX). C ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅ скрипта JavaScript ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ страницу Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π²Π½ΠΈΠ·:

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ языка JavaScript для ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ Π΄ΠΎ Π½ΠΈΠΆΠ½Π΅ΠΉ части страницы, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ driver.page_source ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ содСрТимоС страницы.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Selenium β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… инструмСнтов для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ возмоТностСй для просмотра ΠΈ сбора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ основном ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ тСстирования Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, хотя Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС инструмСнта для сбора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ( web scraping ).

Π‘ΠΎΠ±Π»ΡŽΠ΄Π°ΠΉΡ‚Π΅ Π·Π°ΠΊΠΎΠ½Ρ‹, Ссли Π²Ρ‹ осущСствляСтС сбор ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈΠ· рСсурсов Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. НС Π½Π°Ρ€ΡƒΡˆΠ°ΠΉΡ‚Π΅ авторскиС ΠΏΡ€Π°Π²Π° 😉

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Selenium для Python. Π“Π»Π°Π²Π° 1. Установка

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Selenium для Python.
ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ сдСлан с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π°Π²Ρ‚ΠΎΡ€Π° Baiju Muthukadan.
ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π° ΡΡ‚Π°Ρ‚ΡŒΠΈ

Selenium WebDriver – это программная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для управлСния Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ. WebDriver прСдставляСт собой Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΈ клиСнтскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках программирования, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для управлСния этими Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌΠΈ.

По сути своСй использованиС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Π΅Π±-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° сводится ΠΊ созданию Π±ΠΎΡ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅Π³ΠΎ всю Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ.

Π§Π°Ρ‰Π΅ всСго Selenium WebDriver ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для тСстирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° Π²Π΅Π±-сайтов/Π²Π΅Π±-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. АвтоматизированноС тСстированиС ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ позволяСт ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ тСсты. РСгрСссионноС тСстированиС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Ρ‡Ρ‚ΠΎ старый ΠΊΠΎΠ΄ Π½Π΅ пСрСстал Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ послС внСсСния Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, являСтся Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° автоматизация. WebDriver прСдоставляСт всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, обСспСчиваСт Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ тСста ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ чСловСский Ρ„Π°ΠΊΡ‚ΠΎΡ€ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½). Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Selenium приводятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ»ΡŽΡΡ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:

Π’Π°ΠΊΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡ‹Ρ… особСнностСй Selenium WebDriver являСтся ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы. Бюда ΠΌΠΎΠΆΠ½ΠΎ отнСсти случаи, ΠΊΠΎΠ³Π΄Π° парсинг Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° страницС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈΠ·-Π·Π° страниц пСрСнаправлСния ΠΈΠ»ΠΈ оТидания, содСрТащих ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ тСкст: Β«ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅, страница загруТаСтся». Π’Π°ΠΊΠΈΠ΅ страницы, само собой разумССтся, Π½Π΅ являСтся Ρ†Π΅Π»ΡŒΡŽ парсинга, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΈΡ… часто Π½Π΅ прСдставляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. ЕстСствСнно, Π±Π΅Π· Selenium WebDriver. Selenium WebDriver позволяСт Π² Ρ‚Π°ΠΊΠΈΡ… случаях Β«ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒΒ», ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π» Π±Ρ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΠΎΠΊΠ° Π½Π° страницС, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π΅ появится элСмСнт с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ плюс Selenium Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ дСйствия Π²Π΅Π±-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ минимального Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ нахоТдСния Π½Π° страницС, это позволяСт с удобством Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» сайта, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° прСзСнтация сСрвиса.

НСкоторыС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ WebDriver (ΠΈΠ· сСти ΠΈ Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π°):

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

1. Установка

1.1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Selenium ΠΊ Python прСдоставляСт собой простой API [Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ программирования ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π°Π½Π³Π». Application Programming Interface) β€” ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.] для написания тСстов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ/тСстов соотвСтствия трСбованиям с использованиСм Π²Π΅Π±-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Selenium WebDriver. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Selenium Python API Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСму Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ Selenium WebDriver.

ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° Python-Selenium прСдоставляСт ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ API для доступа ΠΊ Ρ‚Π°ΠΊΠΈΠΌ Π²Π΅Π±-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°ΠΌ Selenium ΠΊΠ°ΠΊ Firefox, Ie, Chrome, Remote ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ вСрсии Python 2.7, 3.2, 3.3 ΠΈ 3.4.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ рассмотрСн Selenium 2 WebDriver API. Selenium 1 / Selenium RC API Π² Π½Π΅ΠΉ Π½Π΅ ΠΎΡ…Π²Π°Ρ‡Π΅Π½Ρ‹.

1.2. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Selenium для Python

Для создания ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ срСды Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ virtualenv. Π’Π°ΠΊΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python 3.4 содСрТит ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pyvenv, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ практичСски Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ virtualenv.

1.3. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ инструкция для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Windows

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Для Π΄Π°Π½Π½ΠΎΠΉ инсталляции Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ доступ ΠΊ сСти Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

1.4. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Selenium server

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
Selenium server Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π² случаях, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ remote WebDriver [ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ β€” ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.]. Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Ρƒ ИспользованиС Selenium с remote WebDriver. Если Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Selenium, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ этот Ρ€Π°Π·Π΄Π΅Π» ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Ρ‹.

Selenium server написан Π½Π° языкС Java. Для Π΅Π³ΠΎ запуска Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π° срСда Java Runtime Environment (JRE) вСрсии 1.6 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Selenium server 2.x Π½Π° страницС Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ сайта selenium. Имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: selenium-server-standalone-2.x.x.jar. Π’Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ послСднюю Π²Π΅Ρ€ΡΠΈΡŽ Selenium server 2.x.

Если Java Runtime Environment (JRE) Π½Π΅ установлСна Π² вашСй систСмС, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ JRE с сайта Oracle. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ систСмы GNU/Linux ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²Π° root [ΠΏΡ€Π°Π²Π° администратора β€” ΠŸΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€.], Π²Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ JRE, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ инструкции вашСй систСмы.

Если ΠΊΠΎΠΌΠ°Π½Π΄Π° java доступна Π² PATH (пСрСмСнная окруТСния), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Selenium server ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ 2.x.x Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсиСй Selenium server, скачанной Π²Π°ΠΌΠΈ с сайта.

Если JRE установлСна ΠΏΠΎΠ΄ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²Π°ΠΌΠΈ root ΠΈ/ΠΈΠ»ΠΈ Ссли ΠΎΠ½Π° нСдоступна Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ окруТСния PATH, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ввСсти ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Ρ„Π°ΠΉΠ»Π° java. Аналогично, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ имя jar-Ρ„Π°ΠΉΠ»Π° Selenium server Π΄ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ. ПослС этого ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Installing Selenium libraries

First you need to install the Selenium bindings for your automation project. The installation process for libraries depends on the language you choose to use.

Installation of Selenium libraries for Java can be done using Maven. Add the selenium-java dependency in your project pom.xml:

The selenium-java dependency supports running your automation project with all Selenium supported browsers. If you want to run tests only in a specific browser, you can add the dependency for that browser in your pom.xml file. For example, you should add following dependency in your pom.xml file to run your tests only in Firefox:

In a similar manner, if you want to run tests only in Chrome, you should add the following dependency:

Python

Installation of Selenium libraries for Python can be done using pip:

Alternatively you can download the PyPI source archive (selenium-x.x.x.tar.gz) and install it using setup.py:

Installation of Selenium libraries for C# can be done using NuGet:

Installation of Selenium libraries for Ruby can be done using gem:

JavaScript

Installation of Selenium libraries for JavaScript can be done using npm:

Kotlin

Due to missing native language bindings for Kotlin, you have to use the Java Bindings, e.g. with maven Java

Selenium Level Sponsors

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. browserstack. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows-browserstack. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° browserstack. Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. saucelabs. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows-saucelabs. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° saucelabs. Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. . ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. applitools. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows-applitools. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° applitools. Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. perfecto perforce. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows-perfecto perforce. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° perfecto perforce. Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. lambda test. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows Ρ„ΠΎΡ‚ΠΎ. ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows-lambda test. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ selenium python windows. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° lambda test. Selenium Python bindings provides a simple API to write functional/acceptance tests using Selenium WebDriver. Through Selenium Python API you can access all functionalities of Selenium WebDriver in an intuitive way.

Support the Selenium Project

Want to support the Selenium project? Learn more or view the full list of sponsors.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Selenium + Python

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ связкой PyCharm + Python + unittest + Selenium + JavaScript.

Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания пригодятся Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ знания Python ΠΈ JavaScript

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Selenium Π½Π΅ зависят ΠΎΡ‚ языка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ тСст. Они Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ SeleniumΒ»

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ тСстировщика Π½Π° Python + Selenium.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Selenium Webdriver ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠ°ΠΊ срСдствами, встроСнными Π² Webdriver, Ρ‚Π°ΠΊ ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ JavaScript манипуляции с DOM.

Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ использованию unittest, Π° ΠΏΠΎΡ‚ΠΎΠΌ посмотрим Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ подскаТут.

Установка

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ установлСн Python

Π—Π°Ρ‚Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ установлСн pip

pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

Если всё Π² порядкС, Ρ‚ΠΎ selenium ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· pip ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚

pip3 install selenium

Collecting selenium Downloading selenium-3.141.0-py2.py3-none-any.whl (904 kB) |β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ| 904 kB 8.7 MB/s Requirement already satisfied: urllib3 in /usr/lib/python3/dist-packages (from selenium) (1.25.8) Installing collected packages: selenium Successfully installed selenium-3.141.0

Π’Ρ‹Π±ΠΎΡ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°

ПослС установки Selenium Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ для Π½ΡƒΠΆΠ½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ².

Π­Ρ‚ΠΎ дСйствиС Π½Π΅ зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ языкС программирования Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ тСст.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Selenium

Когда ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² PATH ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ Π² ваш Python ΠΊΠΎΠ΄.

Firefox Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ называСтся Gecko Driver ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊ

from selenium import webdriver driver = webdriver.Firefox()

Chrome Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ. ВмСсто слова driver Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ свои называния. НапримСр chdriver ΠΈ ffdriver.

from selenium import webdriver driver = webdriver.Chrome()

Поиск элСмСнотов

Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ способов ΠΈΡΠΊΠ°Ρ‚ΡŒ элСмСнты, Π½ΠΎ ΠΈΡ… ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ By

from selenium.webdriver.common.by import By

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ тСст

Π—Π°ΠΉΠ΄Ρ‘ΠΌ Π½Π° сайт ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ Ρ„Ρ€Π°Π·Π° «О Ѐинляндии ΠΈ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡΡ…Β» Π½Π°ΠΉΠ΄Ρ‘ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса, Π½Π°ΠΉΠ΄Ρ‘ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ сСлСктора

from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select driver = webdriver.Chrome() driver.get(«https://www.heihei.ru/») assert «Πž Ѐинляндии ΠΈ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΡΡ…» in driver.title image = driver.find_element_by_class_name(«w100»); # Returns only the first element with the class image2 = driver.find_element_by_css_selector(‘img.w100’) # Returns only the first element with the css selector print (‘image2: ‘) print (image2)

headless

Для Β«Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎΒ» запуска Selenium Webdriver Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ†ΠΈΡŽ headless

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ для тСстирования Π² связкС с CI/CD инструмСнтами.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим Ρ€Π΅ΠΆΠΈΠΌΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Options

from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument(«—headless») driver = webdriver.Chrome(options=chrome_options)

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Π½Π° основС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π― ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ добавляю Π»ΠΎΠ³.

chrome_options = Options() if headless == True : chrome_options.add_argument(«—headless») print («Running in headless mode») else : print («Running head over hills») driver = webdriver.Chrome(options=chrome_options)

Как Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ элСмСнт ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ click()

НапримСр, Π½Π°ΠΉΠ΄Ρ‘ΠΌ элСмСнт button с классом new-button ΠΈ Π½Π°ΠΆΠΌΡ‘ΠΌ Π½Π° Π½Π΅Π³ΠΎ.

МоТно ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ id

Π’Π°ΠΊΠΆΠ΅ допустимо спСрва ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ click()

loginButton = driver.find_element_by_id(‘loginButtonId’) loginButton.click()

Поиск ΠΏΠΎ тСксту

Π—Π°Π΄Π°Ρ‡Π°: ΠΊΠ»ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ с тСкстом LOGIN

Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ: div с тСкстом LOGIN ΠΈΠΌΠ΅Π΅Ρ‚ класс title, Π½ΠΎ элСмСнтов этого класса нСсколько ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎ счёту Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ нСизвСстно

Находим всС элСмСнты класса title

title_class = driver.find_elements_by_class_name(«title») for el in title_class: if el.text == «LOGIN»: login_button = el login_button.click()

Π”ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ элСмСнта

Допустим, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ элСмСнтов с классом Buttons

Π’Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΆΠ΄Π°Ρ‚ΡŒ максимум Π΄Π΅ΡΡΡ‚ΡŒ сСкунд.

driver.implicitly_wait(10) buttons = driver.find_elements_by_class_name(«Buttons»)

Если элСмСнты появятся быстрСС, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ Π΄Π΅ΡΡΡ‚ΡŒ сСкунд Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ implicit wait это Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° элСмСнт Π½Π΅ Π½Π°ΡˆΡ‘Π»ΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π»ΠΈΠΌΠΈΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ истёк. Π›ΠΈΠΌΠΈΡ‚ Π²Ρ‹ устанавливаСтС сами для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ случая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

АвтозаполнСниС Ρ„ΠΎΡ€ΠΌΡ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ автозаполнСния Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° сайтС. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, Ссли Π²Ρ‹ сдСлали Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ всё Π»ΠΈ Π½Π° Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π‘ΠΏΠ΅Ρ€Π²Π° убСдимся, Ρ‡Ρ‚ΠΎ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ страницы присутствуСт Β«ΠšΠΎΡΡ‚Π°-дСль-Боль» Π·Π°Ρ‚Π΅ΠΌ автоматичСски Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΡƒ.

from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select driver = webdriver.Chrome() driver.get(«https://www.heihei.ru/Spain/renovation/costa_del_sol/») assert «ΠšΠΎΡΡ‚Π°-дСль-Боль» in driver.title driver.find_element_by_id(‘container’) driver.find_element_by_class_name(‘imgfull’) municipality_list = Select(driver.find_element_by_name(‘municipality’)) municipality_list.select_by_visible_text(‘ΠœΠ°Ρ€Π±Π΅Π»ΡŒΡ’) area_list = Select(driver.find_element_by_name(‘price’)) area_list.select_by_value(‘area-larger100’) bedrooms_list = Select(driver.find_element_by_name(‘bedrooms’)) bedrooms_list.select_by_value(‘3-bedroom’) meetingplace_list = Select(driver.find_element_by_name(‘meetingplace’)) meetingplace_list.select_by_visible_text(‘Π₯Сльсинки’) your_name_form = driver.find_element_by_name(‘your_name’) your_name_form.send_keys(‘Andrei’) email_form = driver.find_element_by_name(’email’) email_form.send_keys(‘heihei@heihei.ru’) message_form = driver.find_element_by_name(‘message’) message_form.send_keys(‘TEST Message’) sum_form = driver.find_element_by_name(‘sum’) sum_form.send_keys(‘100’) driver.find_element_by_css_selector(‘.img40c.bookingbutton’).click()

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ тСста Π½Π° созданиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

ЗапускаСм Chrome ΠΈ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° сайт.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ поиск элСмСнтов ΠΏΠΎ классу сдСлан срСдствами JavaScript, Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌ элСмСнтам присвоСны ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ id ΠΈ ΡƒΠΆΠ΅ ΠΏΠΎ этим id ΠΈΠ· Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Selenium Webdriver

НС ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ этот тСст сСбС ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ всю ΡΡ‚Π°Ρ‚ΡŒΡŽ. ΠžΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²

Допустим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ нашли этот элСмСнт ΠΈ Π΅Π³ΠΎ Или Ρƒ Π½Π΅Π³ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ id Π²ΠΎΠΎΠ±Ρ‰Π΅, Π½ΠΎ Π²Ρ‹ присвоили Π΅ΠΌΡƒ этот id ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JavaScript

inputElement = driver.find_element_by_id(inputElementId) inputElement.send_keys(«C: \\ Users \\ username \\ Documents \\ Projects \\ projectName \\ products_to_import-ANSI.csv»)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ тСста Π±Π΅Π· использования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Π’Π°ΠΊΠΆΠ΅ Π² этом тСстС Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π°. Пока Ρ‡Ρ‚ΠΎ я Π½Π΅ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ для тСстирования, поэтому вся Π½Π°Π΄Π΅ΠΆΠ΄Π° Π½Π° тСкстовый Π²Ρ‹Π²ΠΎΠ΄.

Selenium + unittest

Как Π²Ρ‹ ΡƒΠΆΠ΅ скорСС всСго Π·Π½Π°Π΅Ρ‚Π΅, Π² Selenium Webdriver Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… срСдств для написания тСстов. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ вмСстС с Webdriver ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ языка программирования, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ программист-тСстировщик.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ Python 3 поэтому Π² качСствС Π±ΠΈΠ±Π»ΠΈΡ‚Π΅ΠΊΠΈ для тСстирования ΠΌΠΎΠ³Ρƒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ unittest, nose ΠΈΠ»ΠΈ pytest.

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ Python 3 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Java, C#, Javascript, Ruby ΠΈΠ»ΠΈ Kotlin

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *