Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Selenium with Python?

How do I set up Selenium to work with Python? I just want to write/export scripts in Python, and then run them. Are there any resources for that? I tried googling, but the stuff I found was either referring to an outdated version of Selenium (RC), or an outdated version of Python.

like image 344
Carpetfizz Avatar asked Jul 09 '13 05:07

Carpetfizz


People also ask

Is Selenium compatible with Python?

Selenium Scripts can be programmed using various languages such as JavaScript, Java, Python, etc. How to Use selenium with Python and Linux Environment.

Why is Selenium used in Python?

Selenium can easily send standard commands of python to various browsers irrespective of all variation in the design of the browser. Python being a scripted language, there is no worrying about running a compiler for converting code from lines of the code to anything that can be implemented and utilized.

Is Python Selenium easy?

Selenium is an open-source web-based automation tool. Python language is used with Selenium for testing. It has far less verbose and easy to use than any other programming language.


1 Answers

You mean Selenium WebDriver? Huh....

Prerequisite: Install Python based on your OS

Install with following command

pip install -U selenium 

And use this module in your code

from selenium import webdriver 

You can also use many of the following as required

from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException 

Here is an updated answer

I would recommend you to run script without IDE... Here is my approach

  1. USE IDE to find xpath of object / element
  2. And use find_element_by_xpath().click()

An example below shows login page automation

#ScriptName : Login.py #--------------------- from selenium import webdriver  #Following are optional required from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException  baseurl = "http://www.mywebsite.com/login.php" username = "admin" password = "admin"  xpaths = { 'usernameTxtBox' : "//input[@name='username']",            'passwordTxtBox' : "//input[@name='password']",            'submitButton' :   "//input[@name='login']"          }  mydriver = webdriver.Firefox() mydriver.get(baseurl) mydriver.maximize_window()  #Clear Username TextBox if already allowed "Remember Me"  mydriver.find_element_by_xpath(xpaths['usernameTxtBox']).clear()  #Write Username in Username TextBox mydriver.find_element_by_xpath(xpaths['usernameTxtBox']).send_keys(username)  #Clear Password TextBox if already allowed "Remember Me"  mydriver.find_element_by_xpath(xpaths['passwordTxtBox']).clear()  #Write Password in password TextBox mydriver.find_element_by_xpath(xpaths['passwordTxtBox']).send_keys(password)  #Click Login button mydriver.find_element_by_xpath(xpaths['submitButton']).click() 

There is an another way that you can find xpath of any object -

  1. Install Firebug and Firepath addons in firefox
  2. Open URL in Firefox
  3. Press F12 to open Firepath developer instance
  4. Select Firepath in below browser pane and chose select by "xpath"
  5. Move cursor of the mouse to element on webpage
  6. in the xpath textbox you will get xpath of an object/element.
  7. Copy Paste xpath to the script.

Run script -

python Login.py 

You can also use a CSS selector instead of xpath. CSS selectors are slightly faster than xpath in most cases, and are usually preferred over xpath (if there isn't an ID attribute on the elements you're interacting with).

Firepath can also capture the object's locator as a CSS selector if you move your cursor to the object. You'll have to update your code to use the equivalent find by CSS selector method instead -

find_element_by_css_selector(css_selector)  
like image 188
Abhishek Kulkarni Avatar answered Oct 02 '22 13:10

Abhishek Kulkarni