NameError: name 'number' is not defined using css-selector as nth-child(n) with Selenium and Python

NameError: name 'number' is not defined using css-selector as nth-child(n) with Selenium and Python

click = self.driver_web_browser.find_element_by_css_selector('#ctl00_ContentPlaceHolder1_Estadocombo > option:nth-child('+ index +').click()

错误:

click = self.driver_web_browser.find_element_by_css_selector('#ctl00_ContentPlaceHolder1_Estadocombo > option:nth-child('+ index +')').click()
NameError: name 'number' is not defined

如果我在第 nth-child(46) 中放入一个非动态值,它就可以正常工作。

不过 id 喜欢放第 nth-child(index)

代码试验:

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)

    if self.state == val.text:
        #event = self.driver_web_browser.find_element_by_css_selector(basecss + ("{}:nth-child({})").click())
        click = self.driver_web_browser.find_element_by_css_selector('#ctl00_ContentPlaceHolder1_Estadocombo > option:nth-child('+ index +')').click()
        print(type(click))
        break 

作为enumerate的一部分,1作为整数传递,您需要使用str()将其转换为字符串,如下所示:

name = self.driver_web_browser.find_elements_by_css_selector("{}:nth-child({})".format( basecss, str(index)))