如何在xpath中嵌入变量

时间:2019-07-07 09:55:29

标签: python-3.x xpath selenium-chromedriver

我正在尝试将变量嵌入到xpath表达式中。这很简单,但是由于某种原因,它对我不起作用。

下面的代码很好用,但是我想将字符串Feb设置为变量,以便可以通过Jan,Mar等进行传递。

reverse_month_select = browser.find_elements_by_xpath("//div[@class='datepicker-months']/table/tbody/tr/td/span[contains(@class, 'month') and text() = 'Feb']")[0]

由于某些原因,当我收到IndexError时,此代码失败:

  

列表索引超出范围month_select =“ Jan”

     

reverse_month_select =   browser.find_elements_by_xpath(“ // div [@ class ='datepicker-months'] / table / tbody / tr / td / span [包含(@class,   'month')和text()=“ + month_select +”]“)[0]

1 个答案:

答案 0 :(得分:0)

我现在仍然确定到底出了什么问题,但是请尝试使用f字符串将月份输入xpath表达式,并让我知道它是否有效:

cal = ['Jan','Feb','March']  #etc.

for month in cal:
    expression = f"//div[@class='datepicker-months']/table/tbody/tr/td/span[contains(@class, 'month') and text() = '{month}']"

然后将您的定义更改为:

reverse_month_select = browser.find_elements_by_xpath(expression)[0]