edward
edward

Reputation: 43

trying to print using nth-child() in python script and selenium

Im Using selenium and python3. I have a LIST id like to loop through in my script using nth-child(1n)

for n in self.driver_web_browser.find_element_by_css_selector('#ctl00_ContentPlaceHolder1_Estadocombo > option:nth-child({n})'):
            str.append(n.text())
            print(str)

Im getting an error please help.

for n in self.driver_web_browser.find_elements_by_css_selector('#ctl00_ContentPlaceHolder1_Estadocombo > option:nth-child({n})'):

File "/Users/ef/Desktop/MyBot/myBot/BOTS/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 614, in find_elements_by_css_selector return self.find_elements(by=By.CSS_SELECTOR, value=css_selector) File "/Users/ef/Desktop/MyBot/myBot/BOTS/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1007, in find_elements 'value': value})['value'] or [] File "/Users/ef/Desktop/MyBot/myBot/BOTS/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/Users/ef/Desktop/MyBot/myBot/BOTS/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified (Session info: chrome=85.0.4183.102)

Upvotes: 0

Views: 303

Answers (2)

edward
edward

Reputation: 43

This also works for printing The whole list

basecss = '#ctl00_ContentPlaceHolder1_Estadocombo > option'
        events = self.driver_web_browser.find_elements_by_css_selector(basecss)


        for index, val in enumerate(events, 1):
            name = self.driver_web_browser.find_elements_by_css_selector("{}:nth-child({})".format( basecss,index))
            print(index,val.text)

Upvotes: 0

Sureshmani Kalirajan
Sureshmani Kalirajan

Reputation: 1938

Since these are select and option values, you can use the Select class

from selenium.webdriver.support.ui import Select


data = [] 
select = Select(driver.find_element_by_id('ctl00_ContentPlaceHolder1_Estadocombo'))
print(select.options)
for opt in select.options:
    data.append(opt.text)
print(data)

Upvotes: 1

Related Questions