gpt4 book ai didi

java - 我想在 Selenium 中按类抽象

转载 作者:行者123 更新时间:2023-12-01 19:47:00 25 4
gpt4 key购买 nike

我想在selenium中按类进行抽象,以便我可以在独立于Selenium的页面类中编写代码。我尝试了以下方法:

interface Element{

By id(String id);

By name(String name);

By className(String className);

By tagName(String tagName);

By xpath(String xpath);

By cssSelector(String cssSelector);

By linkText(String linkText);

By partialLinkText(String partialLinkText);

}


class Locator {

public static By id(String id) {
return By.id(id);

}

public static By name(String name) {
return By.name(name);
}

public By className(String className) {
return By.className(className);
}

public By tagName(String tagName) {
return By.tagName(tagName);
}

public By xpath(String xpathExpression) {
return By.xpath(xpathExpression);
}

public By cssSelector(String cssSelector) {
return By.cssSelector(cssSelector);
}

public By linkText(String linkText) {
return By.linkText(linkText);
}

public By partialLinkText(String partialLinkText) {
return By.partialLinkText(partialLinkText);
}


}

通过这种方式,我必须创建 Locator 类对象。我不想创建 Locator 类对象。我希望这些方法是静态的,这样我就可以使用类名调用这些方法。但我们不能有静态方法,因为它们必须在接口(interface)本身中定义。

如何将By class抽象为一个页面类,并实现每个元素都成为一个变量。

最佳答案

尝试创建一个类,该类接受定位器类型和定位器值作为构造函数中的参数。现在将值传递给标识符类以形成定位器。并创建一个包含所有定位器类型的类作为接受字符串值的方法。您可以将所有定位器类型设置为枚举以提高可读性。

伪代码示例:-

Enum locatorType{
id,
class,
...
}

class identifier{
identifier(locatorType lt,String value){
switch(lt.name()){
//call the By.ltname(value) passing the value;
...
}
class BY extends By{
public By id(value){
//form the findElement;
}
...//similarly for all the locators
}

创建标识符后。我们可以使用要传递给方法包装器的对象来使用创建的对象实现所有 webDriver 方法(click、sendKeys 等)。

希望这能解决您的问题。

关于java - 我想在 Selenium 中按类抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59115398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com