如何编写参数化的xpath?

时间:2018-06-07 09:19:20

标签: html selenium selenium-webdriver xpath

我有一个下拉菜单,“选择工作区”,下面是xpath(使用firebug)和html代码。 问题是xpath不断变化。如何为此参数化xpath? 就像,使用一个xpath,我需要编写一个可以用来调用另一个的函数。

xpath - > .//*[@id='step-content-2']/div/md-content/form/div/div[1]/div[1]/md-card[1]/md-card-content/form-field-panel/div/ul/li[2]/div/div/div/span/span/span[1]

html - &gt; <span class="k-input" unselectable="on">Select Work Area...</span>

下拉列表中包含4个名称,下面是xpath和html

xpath - &gt; html/body/div[3]/div/div[3]/ul/li[1]

html - &gt; <li class="k-item" data-offset-index="0" unselectable="on" role="option" tabindex="-1">Cheyenne</li>

xpath - &gt; html/body/div[3]/div/div[3]/ul/li[2]

html - &gt; <li class="k-item" data-offset-index="1" unselectable="on" role="option" tabindex="-1">Pueblo</li>

还有2个。

我的代码:

def _selectWorkArea(self, text): 
   self.ui.driver.find_element_by_xpath('//li[contains(text()=\'{}\')'.format(text)).click()

def selectName(self, name):
    self._selectWorkArea(name) 

1 个答案:

答案 0 :(得分:0)

为什么不使用非随机生成的内容,例如span文本?

所以你可以这样做:

self.ui.driver.find_element_by_xpath("//span[text()='Select Work Area...']")