我是编程的新手,但我正在研究Selenium自动化。
我在WebDriver driver=new ChromeDriver()
中看到,WebDriver
和ChromeDriver
都是类,ChromeDriver
正在实现WebDriver
,因此WebDriver
用作参考变量放置ChromeDriver
类的对象。
但在WebElement element=driver.findelementby(By.id("something"))
中,WebElement
是一个类,但在右侧,它似乎是一种方法,我假设,FindElement
是{{1}中的方法} .class。引用变量等同于方法而不是类的对象,如上面的段中所示。这怎么可能?什么是这个被称为。上面的段落中是否有与此概念相关的链接?
答案 0 :(得分:3)
在作业表达式(如a = b
)中,左侧(a
)是变量,右侧(b
)是表达式。
表达式只是在评估时具有某种类型(或null
)的值。像1
这样的文字是表达式,但1 + 1 + 1
也是如此:可以将其计算为int
类型的值。
如果您看到WebDriver driver = new ChromeDriver();
,那么从技术上讲,这是变量声明声明 。您的分析大致正确,但重要的是要知道:
您在这里宣布一个新变量;为了声明一个新变量,它必须是一个声明(注意;
);您可以简单地在表达式中指定现有变量:
driver = new ChromeDriver()
您必须将整个new ChromeDriver()
读作表达式:它是类实例创建表达式,您创建的实例将是ChromeDriver
(不是一个子类)。
WebElement element=driver.findelementby(By.id("something"));
并没有什么不同,它只是右侧的一种不同类型的表达式:它是一个方法调用表达式。
driver
,findelementby
是 WebDriver
类中的一种方法,而不是ChromeDriver
(尽管它会存在在ChromeDriver
中,作为WebDriver
)的子类。答案 1 :(得分:0)
在OOP方法中,通常会返回各种类型的值。有时方法什么都不返回。在Java中,它注释为imgView
。
在您的示例中,您调用名为void
的类By
的静态方法。从此方法返回的内容将是id
接口中声明的方法findeElementBy
的参数,该方法由WebDriver
实现。此方法将ChromeDriver
声明为返回类型。
阅读有关面向对象编程(OOP)的更多信息,以熟悉此概念。您可以在此处找到有用的资源,例如:
https://docs.oracle.com/javase/tutorial/java/concepts/ - 这与java有关。 https://www3.ntu.edu.sg/home/ehchua/programming/java/J3a_OOPBasics.html - 这里有更多示例
答案 2 :(得分:0)
在" WebElement element=driver.findElement(By.id("something"))
"
" By.id("something")
":定位器:定位器告诉Selenium需要操作哪些GUI元素(比如文本框,按钮,复选框等)。因此,它会找到" something
"元素使用" id
"。
" findElement(By.id("something"))
":方法:在WebDriver中定位元素是通过使用" findElement(By.locator())"方法
" WebElement element
":对象声明:而不是使用long" driver.findElement(By.locator())"语法每次访问特定元素时,我们都可以为它实例化一个WebElement对象。 WebElement类包含在" org.openqa.selenium。*"封装
FYI ,WebDriver是一个Web自动化框架,允许您针对不同的浏览器执行测试,而不仅仅是Chrome或Firefox或其他浏览器。 WebDriver还允许您在创建测试脚本时使用编程语言
答案 3 :(得分:0)
你的问题是对的,但你的假设是错误的。 WebDriver
和WebElement
不属于班级。它们是由ChromeDriver
类实现的接口。
findElement
是在WebDriver
类中声明的方法,它返回WebElement
接口。
WebDriver
和WebElement
接口由RemoteWebDriver
实施,RemoteWebDriver
进一步扩展ChromeDriver
。
希望有所帮助!