【问题标题】:Selenium Webdriver selecting wrong input in jquery dialogSelenium Webdriver 在 jquery 对话框中选择错误的输入
【发布时间】:2016-05-05 15:43:17
【问题描述】:

我正在测试一个网站,它有一个带有多个文本字段的对话框,有些带有日期选择器,有些没有。

由于某种原因,当我尝试通过 XPath selenium 定位输入时,会找到元素,但是当输入数据时,它会将键发送到顶部字段。这是我的硒代码示例:

DriverHelper.SendKeysByXpath("//input[@name='registrationStartDate']",CurrentDate);
DriverHelper.SendKeysByXpath("//input[@name='firstStartDate']",CurrentDate);
DriverHelper.SendKeysByXpath("//input[contains(@name,'lastStartDate')]","01/01/2018");

仅供参考,DriverHelper 是我调用的一个类,以使自己免于一遍又一遍地输入相同的 selenium 调用。

XPath 名称都是唯一的,据我所知,应该不会混淆我想将密钥发送到哪个输入。

以前有没有人遇到过类似的情况?

我正在尝试在 jsfiddle 中举一个例子,但到目前为止我无法在那里复制问题。

【问题讨论】:

  • 使用 Firebug 检查文档上的 xpath,并确保它们在每一行都选择了您要查找的元素。如果 firebug 中突出显示的元素与使用相同 xpath 时获取键的元素之间存在差异,则需要调试 SendKeysByXpath 方法。
  • 可能页面正在使用 JavaScript 将光标焦点强制到该元素,并且 Selenium 定位该元素后,焦点在发送键之前移动。身份证。我对 SendKeysByXPath 不熟悉——那是你自己创造的吗?这可能是罪魁祸首。此处显示的 XPath 看起来不错。

标签: selenium xpath selenium-webdriver webdriver jquery-ui-dialog


【解决方案1】:

它正在向顶部元素发送键,可能是因为那是他正在选择的那个。 尝试使用这个:

 List<WebElement> result = webDriver.findElements( by );

调试您的代码并检查您的选择器正在检索多少元素。 尝试缩小和改进搜索范围,尽可能缩小所选元素的组范围。

非常个人的看法: 如果您避免使用 xPaths 作为选择器,则代码更易于修复和阅读。我尽可能喜欢 id 和 classes。

Selenium best pratices source

【讨论】:

  • 令人困惑的是只检索了一个元素。每个名称都是唯一的,根据名称检索列表仅返回一个输入字段。我在这个对话框上尝试了多个输入并且位置发生了变化。这让我相信它不只是默认顶部字段。
猜你喜欢
  • 2012-02-09
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2017-06-09
  • 2017-11-10
  • 1970-01-01
  • 2014-02-20
相关资源
最近更新 更多