我有一个完美无缺的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:表达式无法转换为返回指定的类型。
答案 0 :(得分:6)
当您在()
中的字符串周围添加my_var
时,您将其设为长度为1的元组,并且它必须是一个字符串。我会这样做。
driver.find_element_by_xpath('//div[contains(text(), "{}")]'.format(assetID)).click()
答案 1 :(得分:1)
@SuperStew的答案是最好的 Pythonic 方式。说过你也可以通过创建一个接受f = lambda x: x.split(' ',1)[1]
df = pd.concat([x.set_index(x.columns[0]).rename(columns=f) for i, x
in df.groupby(df.columns.str.split(n=1).str[0], axis=1)], 1).stack().unstack()
print (df)
JP Equity KS Equity
2015-12-17 10330.0 10330.0
2015-12-18 10710.0 10710.0
2015-12-21 10720.0 10720.0
2015-12-22 10495.0 10495.0
2015-12-23 10425.0 10425.0
2017-08-31 10460.0 10460.0
2017-09-01 10815.0 10815.0
2017-09-04 10835.0 10835.0
2017-09-05 10660.0 10660.0
2017-09-06 10535.0 10535.0
的函数来选择替代方案,该函数将从String
函数传递,如下所示:
main()
现在,无论何时何地,您都可以使用所需的def click_me(myString):
driver.find_elements_by_xpath("//div[.='" + myString + "']").click()
参数调用此函数,如下所示:
String