首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@FindAll在尝试定位多个元素时有点慢

@FindAll在尝试定位多个元素时有点慢
EN

Stack Overflow用户
提问于 2016-09-21 07:04:23
回答 2查看 254关注 0票数 0

我有一个本地化的页面和“创建帐户”的WebElement可以是英语,中文或日语。我正在使用Selenium,Java和TestNG框架来运行一个测试来点击这个元素。然而,当使用这个@FindAll来识别页面时,性能很慢,这让我想知道是否有更好的方法来做到这一点。

选择"English“区域设置时,检查元素中的元素:

代码语言:javascript
复制
<div class="form-group">
        <a translate="create-account" class="pointer ng-scope" ng-click="vm.createAccount()">Create Account</a>
    </div>

我的FindAll声明:

代码语言:javascript
复制
@FindAll({
    @FindBy(linkText="Create Account"),
    @FindBy(linkText="创建账号"),
    @FindBy(linkText="アカウントを作成")
})
private List<WebElement> createAccount;

作为比较的基准,如果我使用上面的@FindAll,在Webdriver点击链接之前大约需要15秒。如果我只使用@FindBy,大约需要2-3秒。但是,@FindBy对我不起作用,因为我需要能够找到正确的区域设置才能单击链接。

EN

回答 2

Stack Overflow用户

发布于 2016-09-21 07:11:28

您可以使用单个css选择器,如下所示:

a[ng-click*='createAccount']

或其中一个xpath:

代码语言:javascript
复制
//a[contains(@ng-click, 'createAccount')]
//a[contains(text(), 'Create Account') or contains(text(), '创建账号') or contains(text(), 'アカウントを作成')]

对于css,如果传递部分属性值,则它应该为[@attributeName*='part_of_attribute_value']

请在这里查看css规则w3schools css selectors的基本列表

票数 1
EN

Stack Overflow用户

发布于 2016-09-22 09:18:00

感谢@lauda的帮助和指向w3 css选择器的链接。实际上,我发现了另外两种使用css识别此链接的方法:

代码语言:javascript
复制
@FindBy(css="a[translate='create-account']")
private WebElement CreateAccount;

代码语言:javascript
复制
@FindBy (css="a.pointer.ng-scope")
private WebElement CreateAccount;

然而,我不确定为什么lauda发布的原始解决方案对我不起作用。

代码语言:javascript
复制
a[ng-click*='createAccount']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39605037

复制
相关文章

相似问题

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