使用 webdriver 查找 webelement 的多个定位器 [英] Multiple locator for finding webelement with webdriver

查看:52
本文介绍了使用 webdriver 查找 webelement 的多个定位器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用带有 QAF 的 Selenium Webdriver.我面临的问题与在网页上查找元素有关.对于少数元素,不同的定位器在不同的时间工作.

I am using Selenium Webdriver with QAF. The issue I am facing is related to finding an element on webpage. for few of elements, different locators work at different times.

例如 - 有时 name=nameA 有效,有时 name=nameB(可能取决于 AUT 的不同环境,我不知道).

For example - sometimes name=nameA works and sometimes name=nameB(may be depending upon different environments of AUT, I have no clue).

在下面找到代码:

public class HomePage extends WebDriverBaseTestPage<WebDriverTestPage> {


    @FindBy(locator="name=nameA")
    private QAFWebElement btnSomeElement;


    @Override
    protected void openPage(PageLocator locator, Object... args) {
        driver.get("/");
    }
}

我应该怎么做才能解决这个问题?

What should I do to come over this issue?

推荐答案

虽然您已经在使用 QAF,但您已经拥有适用于此类用例的解决方案.首先,您应该使用 Locator 存储库,无需在页面中硬编码定位器,只需提供定位键即可.

While you are already using QAF you already have solutions available for such use case. First of all you should use Locator repository, Instead of hard-coding locator in page just provide locator key.

例如:

在 page.loc 文件中

my.ele.locator=<locatorStretegy>=<locator>
my.ele.locator=name=elemName

在页面类中:

@FindBy(locator = "my.ele.loc")
private QAFWebElement btnSomeElement; Now coming to your problem, if most of the locator very with environment then you can utilize

QAF 的资源管理能力.在其他情况下你可以使用 QAF 提供的备用定位器策略.例如:

resource management capabilities of QAF. In other case you can use alternate locator strategy provided by QAF. For example:

my.ele.locator=['css=.cls#eleid','name=eleName','name=eleName2']
my.ele.locator=['name=eleNameEnv1','name=eleNameEnv2']

这篇关于使用 webdriver 查找 webelement 的多个定位器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆