我有一个本地化的页面和“创建帐户”的WebElement可以是英语,中文或日语。我正在使用Selenium,Java和TestNG框架来运行一个测试来点击这个元素。然而,当使用这个@FindAll来识别页面时,性能很慢,这让我想知道是否有更好的方法来做到这一点。
选择"English“区域设置时,检查元素中的元素:
<div class="form-group">
<a translate="create-account" class="pointer ng-scope" ng-click="vm.createAccount()">Create Account</a>
</div>我的FindAll声明:
@FindAll({
@FindBy(linkText="Create Account"),
@FindBy(linkText="创建账号"),
@FindBy(linkText="アカウントを作成")
})
private List<WebElement> createAccount;作为比较的基准,如果我使用上面的@FindAll,在Webdriver点击链接之前大约需要15秒。如果我只使用@FindBy,大约需要2-3秒。但是,@FindBy对我不起作用,因为我需要能够找到正确的区域设置才能单击链接。
发布于 2016-09-21 07:11:28
您可以使用单个css选择器,如下所示:
a[ng-click*='createAccount']
或其中一个xpath:
//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的基本列表
发布于 2016-09-22 09:18:00
感谢@lauda的帮助和指向w3 css选择器的链接。实际上,我发现了另外两种使用css识别此链接的方法:
@FindBy(css="a[translate='create-account']")
private WebElement CreateAccount;和
@FindBy (css="a.pointer.ng-scope")
private WebElement CreateAccount;然而,我不确定为什么lauda发布的原始解决方案对我不起作用。
a[ng-click*='createAccount']https://stackoverflow.com/questions/39605037
复制相似问题