繁体   English   中英

调用类和函数时 Python Selenium 中 xpath 中的变量

[英]Variable in xpath in Python Selenium when calling Class and Function

我有以下课程:

class Sections(BasePage):

    CHOOSE_SECTION_SEL = (By.XPATH, "//*[@class='select2-result-label' and (text() = '" + state + "')]")

    def choose_section(self, state):
        self.click_on_element("choose section", self.CHOOSE_SECTION_SEL)

然后我想这样称呼它,这样我就可以随心所欲地更改变量“状态”,但它显然不起作用:

section = Sections(driver=self.driver)
section.choose_section(state="CALENDAR")

我知道我可以这样做并且它正在工作:

class Sections:

    def section(self, state):
        driver.find_element_by_xpath("//*[@class='select2-result-label' and (text() = '" + state + "')]").click()

...

choose = Sections()
choose.section(state="CALENDAR")

但是我必须像第一个例子那样做。 有什么想法我必须改变吗?

您可以将表示法更改为以下任一形式:

  • 使用变量

     CHOOSE_SECTION_SEL = (By.XPATH, "//*[@class='select2-result-label' and text()='" + state + "']")
  • 使用%s

     CHOOSE_SECTION_SEL = (By.XPATH, "//*[@class='select2-result-label' and text()='%s']"% str(state))
  • 使用{}

     CHOOSE_SECTION_SEL = (By.XPATH, "//*[@class='select2-result-label' and text()='{}']".format(str(state)))

你可以像这样实现它:

class Sections(BasePage):

    def choose_section(self, state):
        self.CHOOSE_SECTION_SEL = (By.XPATH, "//*[@class='select2-result-label' and (text() = '" + state + "')]")
        self.click_on_element("choose section", self.CHOOSE_SECTION_SEL)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM