【问题标题】:How to embed variable in xpath如何在xpath中嵌入变量
【发布时间】:2019-07-07 09:55:29
【问题描述】:

我正在尝试将变量嵌入到 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[contains(@class, 'month') 和 text() = " + month_select + "]")[0]

【问题讨论】:

  • 您究竟是如何尝试传递变量的?
  • 和上面的代码一模一样。因此,将变量 month_select 声明为字符串,然后将其传递给 x-path 表达式。

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


【解决方案1】:

我现在仍然确定到底出了什么问题,但尝试使用 f-strings 将月份输入 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]

【讨论】:

  • 绝对精彩。非常感谢!
猜你喜欢
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多