Listing selection of parameter values โ€‹โ€‹with Selenium and Python

I have the following HTML code

<select name="countries" class_id="countries"> <option value="-1">--SELECT COUNTRY--</option> <option value="459">New Zealand</option> <option value="100">USA</option> <option value="300">UK</option> </select> 

I am trying to get a list of parameter values โ€‹โ€‹(e.g. 459, 100, etc., not text) using Selenium.

I currently have the following Python code

 from selenium import webdriver def country_values(website_url): browser = webdriver.Firefox() browser.get(website_url) html_code=browser.find_elements_by_xpath("//select[@name='countries']")[0].get_attribute("innerHTML") return html_code 

As you can see, the code returns pure HTML code, which I parse using the HTMLParser library. Is there a way to get parameter values โ€‹โ€‹using Selenium? In other words, without having to parse the result from Selenium?

+7
python selenium
source share
3 answers

check it out, here is how I did it before I found out that the Select module did

 from selenium import webdriver browser = webdriver.Firefox() #code to get you to the page select_box = browser.find_element_by_name("countries") # if your select_box has a name.. why use xpath?..... this step could use either xpath or name, but name is sooo much easier. options = [x for x in select_box.find_elements_by_tag_name("option")] #this part is cool, because it searches the elements contained inside of select_box and then adds them to the list options if they have the tag name "options" for element in options: print element.get_attribute("value") # or append to list or whatever you want here 

is output as follows

 -1 459 100 300 
+14
source share
 import selenium.webdriver as webdriver import selenium.webdriver.support.ui as UI import contextlib with contextlib.closing(webdriver.Firefox()) as driver: driver.get(url) select = UI.Select(driver.find_element_by_xpath('//select[@name="countries"]')) for option in select.options: print(option.text, option.get_attribute('value')) 

prints

 (u'--SELECT COUNTRY--', u'-1') (u'New Zealand', u'459') (u'USA', u'100') (u'UK', u'300') 

I found out about it here . See also documents .

+7
source share

Simplified version:

 dropdown_menu = Select(driver.find_element_by_name(<NAME>)) for option in dropdown_menu.options: print option.text 
+2
source share

All Articles