首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们如何处理ATATA中的jQuery自动补充?

我们如何处理ATATA中的jQuery自动补充?
EN

Stack Overflow用户
提问于 2020-08-24 05:33:55
回答 1查看 163关注 0票数 1

以下是输入:

这些是预测性搜索的结果

在ATATA框架中,我找不到更好的方法来处理JQuery自动复合输入。

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

代码语言:javascript
复制
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();

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-26 00:00:42

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

代码语言:javascript
复制
[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();
    }
}

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

代码语言:javascript
复制
[FindById("autocomplete")]
public JQAutocomplete<_> School { get; private set; }

最后在测试中使用它:

代码语言:javascript
复制
page.School.Select("some value")

您可以在此处找到可用的样本源:https://github.com/atata-framework/atata-samples/tree/master/JQueryUI

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63552210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档