在Selenium中,当我将ByChained与两个ByXPath一起使用时,以及仅使用ByXPath定位器时,为什么会得到不同的结果?

时间:2019-03-28 16:58:44

标签: selenium selenium-webdriver xpath

我不知道为什么在使用By.Chained时会得到某个元素。

我有以下HTML:

enter image description here

当我使用定位器时

By.XPath("//*[text()='End date']/..//input[@type='text']")

我得到第二个输入框,如预期的那样: enter image description here

但是,当我使用定位器

By.Chained([By.XPath: //*[text()='End date']/..,By.XPath: //input[@type='text']])

我得到第一个输入框:

enter image description here

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您的第二个表达式(都以/开头)是absolute location path。如果此By.Chained将第一个表达式的每个结果作为第二个表达式的上下文,您将需要一个相对表达式,例如:

.//input[@type='text']

或更清晰的一个:

descendant::input[@type='text']