微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们如何使用ATATA处理jQuery自动完成功能?

如何解决我们如何使用ATATA处理jQuery自动完成功能?

enter image description here

以下是输入内容

Here is a jQuery autocomplete

这些是预测搜索的结果

These are the results

在ATATA框架中找不到更好的方法来处理JQuery自动完成输入。

如果没有框架,我可以做这样的事情

private IWebElement SchoolInput => _driver.FindElement(By.Id("autocomplete"));

public void SelectSchool(string school)
{

  // Wait for SchoolInput
  
  SchoolInput.SendKeys(school);
  SchoolInput.SendKeys(Keys.Delete) // Sometimes,results won't show,so need to delete last char
  
  // Now need to locate results div
  var searchResultsDiv = _driver.FindElement(By.Id("ui-id-1"));
  // Wait for searchResultDiv
  var expectedSchool = _driver.FindElement(By.Xpath($"//li[contains(text(),'{school}')]));
  // Wait for expected school
  expectedSchool.Click();

}

解决方法

您可以通过以下方式为jQuery UI Autocomplete创建自定义Atata控件类:

columns=

然后将其添加到您的页面对象:

read_pdf

最后在测试中使用它:

[ControlDefinition("input",ContainingClass = "ui-autocomplete-input",ComponentTypeName = "autocomplete")]
public class JQAutocomplete<TOwner> : Input<string,TOwner>
    where TOwner : PageObject<TOwner>
{
    [FindByClass("ui-autocomplete",ScopeSource = ScopeSource.Page)]
    public UnorderedList<ListItem<TOwner>,TOwner> DropDownItems { get; private set; }

    public TOwner Select(string value)
    {
        Set(value);

        return DropDownItems[x => x.Content.Value.Contains(value)].Click();
    }
}

在这里您可以找到有效的示例源:https://github.com/atata-framework/atata-samples/tree/master/JQueryUI

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。