将变量传递到xpath selenium、Python

将变量传递到xpath selenium、Python,python,selenium,xpath,Python,Selenium,Xpath,这是我试图将变量传递到xpath的代码 def findcase(year): select = Select(driver.find_element_by_id('SheetContentPlaceHolder_coaCaseSearch_ddlCaseYear')) select.select_by_value(str(year)) 正在获取以下错误消息: Traceback (most recent call last): File "/Users/jack

这是我试图将变量传递到xpath的代码

def findcase(year):     
    select = Select(driver.find_element_by_id('SheetContentPlaceHolder_coaCaseSearch_ddlCaseYear'))
    select.select_by_value(str(year))
正在获取以下错误消息:

Traceback (most recent call last):
  File "/Users/jackboland/Library/Mobile Documents/com~apple~CloudDocs/Python/Selenium/8thDistBriefScraping_FUNCTIONVersion.py", line 27, in <module>
    findcase('2013','100604')
  File "/Users/jackboland/Library/Mobile Documents/com~apple~CloudDocs/Python/Selenium/8thDistBriefScraping_FUNCTIONVersion.py", line 18, in findcase
    select = Select(driver.find_element_by_id('SheetContentPlaceHolder_coaCaseSearch_ddlCaseYear'))
  File "/anaconda2/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 353, in find_element_by_id
    return self.find_element(by=By.ID, value=id_)
  File "/anaconda2/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 957, in find_element
    'value': value})['value']
  File "/anaconda2/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 314, in execute
    self.error_handler.check_response(response)
  File "/anaconda2/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"id","selector":"SheetContentPlaceHolder_coaCaseSearch_ddlCaseYear"}
  (Session info: chrome=66.0.3359.181)
  (Driver info: chromedriver=2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platform=Mac OS X 10.13.4 x86_64)

我明白了。有效的代码如下所示:

year = 2014
yearstr = str(year)
casenum = 100604
casenumstr = str(casenum)
select = Select(driver.find_element_by_id('SheetContentPlaceHolder_coaCaseSearch_ddlCaseYear'))
select.select_by_value(yearstr)
#inserts the case number in that box below the year
driver.find_element_by_id('SheetContentPlaceHolder_coaCaseSearch_txtCaseNum').send_keys(casenumstr)

错误表示找不到id为
SheetContentPlaceHolder\u coaCaseSearch\u ddlCaseYear
的元素,请手动检查Chrome DevTool中的定位器
#SheetContentPlaceHolder_CoaceSearch_DlcaseYear
,并在您的问题中共享相关HTML能否共享HTML您的问题与将变量传递到XPath无关,因为:1)您没有使用XPath,2)在
选择之前的行中出现异常。按值选择(str(年)
。确保
select
节点不是动态生成的,它不位于
iframe
内。我认为下面是相关的HTML。注意,如果我只是在上面的代码中输入一年,而不是我所做的变量尝试,我不会收到任何错误。因此,selenium代码与实际值完美配合,如上所述,尝试将变量名传递到代码中失败。[link]#SheetContentPlaceHolder_coaCaseSearch_ddlCaseYear[link]
year = 2014
yearstr = str(year)
casenum = 100604
casenumstr = str(casenum)
select = Select(driver.find_element_by_id('SheetContentPlaceHolder_coaCaseSearch_ddlCaseYear'))
select.select_by_value(yearstr)
#inserts the case number in that box below the year
driver.find_element_by_id('SheetContentPlaceHolder_coaCaseSearch_txtCaseNum').send_keys(casenumstr)