如何在Selenium WebDriver中用XPath contains()函数定位对应日历备注元素
方案1:传入日期直接返回对应日历备注元素
你可以直接使用如下可参数化的XPath,把${targetDate}替换为你要查询的日期(比如13、14)即可返回对应日期的备注WebElement:
//div[@class='ext-cal-wk-ct']/table/tbody/tr[2]/td[position() = count(//div[@class='ext-cal-wk-ct']/table/tbody/tr[1]/td/div[text()='${targetDate}']/../preceding-sibling::td) + 1]/div
逻辑说明:
- 先定位到第一行
tr中值等于目标日期的div - 计算该
div所属的td是当前行的第几个 - 直接取第二行
tr中相同位置td下的div,也就是对应日期的备注元素
如果你的实际页面中ext-cal-wk-ct下确实有多个table,需要取第二个的话,把上述XPath中的table替换为table[2]即可。如果日期前后有多余空白字符,把text()='${targetDate}'替换为contains(text(), '${targetDate}')即可适配。
方案2:通用模糊匹配(兼容日期/备注内容查询)
如果你需要传入任意文本(可以是日期,也可以是备注里的内容比如Tim Cook)都能匹配到对应元素,可以直接用以下简化写法:
//div[@class='ext-cal-wk-ct']//td/div[contains(text(), '${targetText}')]
传入不同的${targetText}即可得到你需要的元素,完全兼容你之前编写的两个单独XPath的能力。
内容的提问来源于stack exchange,提问作者Soham Sur
相关产品推荐
相关产品推荐

