【问题标题】:Selenium with Kendo UISelenium 与 Kendo UI
【发布时间】:2018-06-08 15:44:53
【问题描述】:

我们将 Kendo UI 用于我们的按钮和文本框。它引起了硒的问题。如果用户手动测试,那么步骤是>>他们将鼠标拖到文本框上,文本框被突出显示并且用户点击文本框。然后光标开始出现,用户可以输入。

至于 selenium 'driver.findElement' 能够找到文本框但无法获得光标。我也试过 textbox.click 和鼠标事件,

【问题讨论】:

  • 我们无法回答一个非常广泛的问题。请具体说明,您还需要添加您的代码、Html、屏幕截图或我们可以查看的内容
  • 您是否尝试过在设置值之前使用Actions 悬停?

标签: selenium kendo-ui


【解决方案1】:

尝试使用executeScript方法设置元素的值:

JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("document.getElementById('elementID').setAttribute('value', 'yourValue')");

编辑:

但正如@JeffC 已经提到的,这不是一个“明确”的解决方案。您可以在下面看到更好的。

如您所见,here 文本框的工作方式如下:

  1. 您必须通过此 xPath 单击第一个输入://ul[@id = 'fieldlist']/li[1]/label/span/span/input[1]

就是这个输入框:

  1. 在点击第一个输入之前第二个输入

display:none。现在它有了display:inline-block,所以我们可以通过这个xPath //ul[@id = 'fieldlist']/li[1]/label/span/span/input[2] 对这个(第二个)元素执行sendKeys() 操作。

在你的情况下你可以做同样的事情。

PS 在代码中应该是这样的:

WebElement firstInput = driver.findElement(By.xpath("//ul[@id = 'fieldlist']/li[1]/label/span/span/input[1]")); 
firstInput.click();

new WebDriverWait(driver,10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//ul[@id = 'fieldlist']/li[1]/label/span/span/input[2]")); // waits until second input becomes visible

WebElement secondInput = driver.findElement(By.xpath("//ul[@id = 'fieldlist']/li[1]/label/span/span/input[2]")); 
secondInput.sendKeys("55");

【讨论】:

  • 使用 JS 围绕 UI 操作进行快捷方式可能会导致页面/站点出现问题。该站点的构建期望执行某些操作。当您使用 JS 直接为字段赋值时,您将绕过这些站点保护等。没有用户会运行 JS 将文本插入字段。使用 JS 不会模拟真实的用户操作。
  • @krishna 我在回答中添加了另一个建议。请看看它,如果它对你有帮助,请告诉我
  • @andrei-suvorkov- 完美运行- 这是因为 "style="display: inline-block;"
  • @Krishna 如果您对我的帮助感到满意,请点击下方的灰色复选按钮标记我的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多