Paz
Paz

Reputation: 1099

Select an input element using Selenium

Inspect

Im trying to click on this button to move to the login page. my code is :

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://moodle.tau.ac.il/')

thats work fine but i can only find the form by using

loginform = driver.find_element_by_xpath("//form[@id='login']/")

I don't know how to get to the button, it's very basic stuff but I didn't find any good example.

Upvotes: 8

Views: 29326

Answers (3)

Colby
Colby

Reputation: 136

This will click on the login button on moodle.tau.ac.il page. The line driver.find_element_by_xpath(".//*[@id='login']/div/input").click() finds the login button on the page and clicks it. Xpath is just a selector type that you can use with selenium to find web elements on a page. You can also use ID, classname, and CSSselectors.

from selenium import webdriver

driver = new webdriver.Chrome()

driver.get('moodle.tau.ac.il')
# This will take you to the login page.
driver.find_element_by_xpath(".//*[@id='login']/div/input").click()

# Fills out the login page
elem = driver.find_element_by_xpath("html/body/form/table/tbody/tr[2]/td/table/tbody/tr[1]/td[2]/input")
elem.send_keys('Your Username')
elem = driver.find_element_by_xpath("html/body/form/table/tbody/tr[2]/td/table/tbody/tr[3]/td[2]/input")
elem.send_keys('Your ID Number')
elem = driver.find_element_by_xpath("html/body/form/table/tbody/tr[2]/td/table/tbody/tr[1]/td[2]/input")
elem.send_keys('Your Password')
driver.find_element_by_xpath("html/body/form/table/tbody/tr[2]/td/table/tbody/tr[7]/td[2]/input").click()

Upvotes: 5

Florent B.
Florent B.

Reputation: 42538

The page has two identical login forms and your XPath returns the hidden one. So with the visible one:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get(r"http://moodle.tau.ac.il/")
driver.find_element_by_css_selector("#page-content #login input[type=submit]").click()

Or with an XPath:

from selenium import webdriver

driver = webdriver.Chrome()

driver.get(r"http://moodle.tau.ac.il/")
driver.find_element_by_xpath("id('page-content')//form[@id='login']//input[@type='submit']").click()

Upvotes: 2

Xena
Xena

Reputation: 386

You could find it using XPath as mentioned by @ChrisP

You could find it by CSS selector: "#login input[type='text']"

Or you could also just submit the form... loginForm.submit()

Ideally, you'd have a unique id for that button which would make it very easy to find.

Upvotes: -2

Related Questions