selenium 2(webdriver)如何实现WebElement

Guy*_*Guy 2 python implementation selenium webdriver selenium-webdriver

我正在考虑的场景是基本的:

page = driver.open_page(URL)
linkElement = page.find_elements(XPATH)[0]
linkElement.click()
Run Code Online (Sandbox Code Playgroud)

(我假设我正在使用远程机器 - 即远程驱动程序).服务器如何知道要单击的元素.

更一般地说,我找不到硒2实施的概述.也就是说,一方面讲述故事但不在代码中逐行排列的东西,而是比api更详细的东西.

Jim*_*ans 5

你是对的,对于WebDriver如何实现其API的各个部分,没有一个很好的"一刀切"的"隐藏"看,主要是因为实际的实现可能会因浏览器而异和操作系统.你最接近的是项目维基上的各个页面.

要回答您的具体问题,远程服务器会创建客户端驱动程序的本地实例,并使用它来查找并单击该元素.驱动程序(InternetExplorerDriver,FirefoxDriver,ChromeDriver等)通常使用JavaScript来查找元素并在页面上获取其尺寸和位置.如果需要,元素将滚动到视图中,并将OS级别的鼠标事件发送到浏览器窗口以模拟点击.

但是,这只是常见情况,并且存在例外情况.例如,某些浏览器可能会使用JavaScript 自动化原子以外的方法找到该元素.同样,某些操作系统上的某些驱动程序依赖于合成事件而不是OS级别或所谓的"本机"事件.要记住的重要一点是远程服务器实例化您在本地调用驱动程序时所使用的相同对象,而不使用Selenium远程服务器.