2016-01-20 36 views
2

它如何使用id,class等类型来定位或标识元素。此外,BY是一个抽象类。如果可能,我们如何为它创建对象?我们知道我们不能直接为抽象创建对象,而不能由另一个类实现它。我想知道它背后的场景中,我们直接使用我们的脚本如何使用'By'机制来定位硒中的元素

公共抽象类通过 之前扩展java.lang.Object

我已经通过链接“https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/By.html

+0

你的答案是[这里](http://stackoverflow.com/questions/17407203/can-we-use-static-method-in-an-abstract-class)。你需要了解抽象类的概念。 –

回答

1

我走了也需要相同的功能,而不是创建使用下面的代码实现的功能。基本上findElement方法使用By来定位元素。

String xPath = "xpath=//*[@text='some text']"; 
//String xPath = "name='some text'"; 
//String xPath = "id=xxxx"; 

driver.findElement(getBy(xPath)); 

private By getBy(String locator) { 
    String[] parts = locator.split("=", 2); 
    By by = null; 
    switch (parts[0].trim()) { 
    case "xpath": 
     by = By.xpath(parts[1]); 
     break; 
    case "name": 
     by = By.name(parts[1]); 
     break; 
    case "link": 
     by = By.linkText(parts[1]); 
     break; 
    case "id": 
     by = By.id(parts[1]); 
     break; 
    case "css": 
     by = By.cssSelector(parts[1]); 
     break; 
    default: 
     throw new RuntimeException("invalid locator"); 
    } 
    return by; 
} 

希望这会对你有帮助。

+0

感谢您的回复。这将有助于我更多地了解它。 –

+0

@RameshUppuluri如果是,至少选择一个正确答案。乐意效劳。 –

0

你不需要了解硒的实施。你只需要知道如何使用它。

如果您在IDE中自动完成并键入By。你会看到很多在这个By类中定义的静态方法。

这里是一个example

+0

谢谢你的建议,是的,我同意你的看法,但就采访而言,我们必须知道它的内在和外在。 :P –

相关问题