在Python Selenium中的xpath中使用变量时出错

在Python Selenium中的xpath中使用变量时出错,python,selenium,Python,Selenium,我有一个xpath,它工作得非常好。这是我的密码: driver.find_element_by_xpath('//div[contains(text(), "aots-cm")]').click() 但“aots cm”是一个硬编码值。我想传递一个变量,而不是硬编码的值 assetId = ("aots-cm") my_var = ("'//div[contains(text()," + " " + '"' + assetId+ '"' + ")]'") print (my_var) ==

我有一个xpath,它工作得非常好。这是我的密码:

driver.find_element_by_xpath('//div[contains(text(), "aots-cm")]').click()
但“aots cm”是一个硬编码值。我想传递一个变量,而不是硬编码的值

assetId = ("aots-cm")
my_var = ("'//div[contains(text()," + " " + '"' + assetId+ '"' +  ")]'")
print (my_var)
=== > '//div[contains(text(), "aots-cm")]' ==> looks ok to me
driver.find_element_by_xpath(my_var).click()
有错误消息 给定的xpath表达式“'//div[contains(text(),“aots cm”)]”无效:TypeError:表达式无法转换为返回指定的类型。

当您在
my_var
中的字符串周围添加
()
时,将其设置为长度为1的元组,并且它必须是字符串。我愿意这样做

driver.find_element_by_xpath('//div[contains(text(), "{}")]'.format(assetID)).click()

@Supersew的答案是最好的Pythonic方式。如上所述,您还可以通过创建一个函数来接受一个
字符串,该字符串将从
main()
函数传递,如下所示:

def click_me(myString):
        driver.find_elements_by_xpath("//div[.='" + myString + "']").click()
click_me("aots-cm")
现在,无论何时何地需要,您都可以使用所需的
String
参数调用此函数,如下所示:

def click_me(myString):
        driver.find_elements_by_xpath("//div[.='" + myString + "']").click()
click_me("aots-cm")
可能重复的