我目前正在处理一个脚本,该脚本根据给定的文本打印Web元素的ID。到目前为止,我设法做到了:
wait.until(lambda browser: browser.find_element_by_xpath("//*[contains(text(), 'my_text')]"))
ID = browser.find_element_by_xpath("//*[contains(text(), 'my_text')]").get_attribute("id")
print(ID)
代码工作正常,但是我想对其进行更改,以便可以将其用于“ my_text”以外的字符串。
如何将变量传递给该函数?像这样:
variable = 'my_text'
wait.until(lambda browser: browser.find_element_by_xpath("//*[contains(text(), variable)]"))
ID = browser.find_element_by_xpath("//*[contains(text(), variable)]").get_attribute("id")
print(ID)
这样,我可以将任何文本分配给变量,并且每次都使用相同的函数。
谢谢!
答案 0 :(得分:3)
尝试使用以下代码:
variable = "my_text"
your_needed_xpath = "//*[contains(text(), '{}')]".format(variable)
希望对您有帮助!
答案 1 :(得分:0)
您可以先将xpath模式格式化,然后再将其提供给方法。
pattern = "//*[contains(text(), %s)]" % variable
ID = browser.find_element_by_xpath(pattern).get_attribute("id")
答案 2 :(得分:0)
执行以下操作-只需将变量括在{}中,并在字符串前添加“ f”:
variable = 'my_text'
wait.until(lambda browser: browser.find_element_by_xpath(f'//*[contains(text(), {variable})]'))
ID = browser.find_element_by_xpath(f'//*[contains(text(),{variable})]').get_attribute("id")
print(ID)
答案 3 :(得分:0)
您也可以尝试此方法。希望它会起作用。
str.extract