我使用的是Python和Selenium Webdriver。
我有以下代码按预期工作:
driver.find_element_by_xpath('//p[text()="text"]/../following-sibling::td/div/div/table/tbody/tr/td/a[@class ="class_name"]')
我想改变上面的"文字"变量,类似于下面:
driver.find_element_by_xpath('//p[text()="%s"] % variable_name/../following-sibling::td/div/div/table/tbody/tr/td/a[@class ="class_name"]')
这不起作用,因为它不是有效的XPath表达。有人可以帮忙正确编码吗?
编辑: 此外,如果有一种方法可以在后续兄弟中搜索也很有用的文本。类似于:
driver.find_element_by_xpath('//p[text()="%s"] % variable_name/../following-sibling:[div@text()= "text"]')
答案 0 :(得分:2)
当您撰写'//p[text()="%s"] % variable_name/../following-sibling::td/div/div/table/tbody/tr/td/a[@class ="class_name"]'
时,您创建的字符串字面上包含 %s
和% variable_name
。 %
运算符和要替换的变量位于字符串文字之外:
'//p[text()="%s"]/../following-sibling::td/div/div/table/tbody/tr/td/a[@class ="class_name"]' % variable_name