我需要在Selenium代码中找到一个包含XPath的节点以实现自动化。问题是,需要选择的节点不包含用于标识的信息,但目标节点的父节点的后代节点包含用于标识的信息。
<object>...</object>
<object>
<div>Name</div>
<target></target>
</object>
<object>...</object>为了简化上面的情况。有多个“对象”节点,并且仅通过“名称”来区分彼此。虽然我们不能在XPath中使用括号,但如何使用driver.find_element_by_xpath()方法选择该节点?
发布于 2019-01-30 23:32:51
如果我对您的问题理解正确,下面的XPath表达式可能就是您要查找的表达式:
//div[text()="Name"]/../target这实际上是以具有文本内容Name的div为目标,使用..跳转到其父节点,然后选择节点类型为target的子节点。
如果target节点不是父节点的直接子节点,下面的代码将在任何深度查找父节点的后代的target节点(请注意,唯一的区别是现在target前面有两个斜杠):
//div[text()="Name"]/..//target发布于 2019-01-31 00:07:59
如果你想做泛型函数,并且想在每个time.Try中传递你的参数。
def fxpath(varstring):
Xpathelement = "//div[text()='{}']/../target".format(varstring)
driver.find_element_by_xpath(Xpathelement)
fxpath('Name')https://stackoverflow.com/questions/54443936
复制相似问题