看了 http://blog.csdn.net/wwwqjpcom/article/details/51232302 这个的文章,照葫芦画瓢,弄了一个IE版本。
MyIEDriver.java
import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; import org.openqa.selenium.Capabilities; import org.openqa.selenium.Platform; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.Command; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.DriverCommand; import org.openqa.selenium.remote.HttpCommandExecutor; import org.openqa.selenium.remote.Response; import org.openqa.selenium.remote.internal.WebElementToJsonConverter; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; public class MyIEDriver extends InternetExplorerDriver { public static String sid = "0277ded1-a5fa-40f6-a396-9c192049051c"; public static String url = "http://localhost:38005"; private Capabilities mycapabilities; public MyIEDriver() { mystartClient(url); mystartSession(sid); } @Override protected void startSession(Capabilities desiredCapabilities, Capabilities requiredCapabilities) { } @Override protected void startClient(Capabilities desiredCapabilities, Capabilities req) { } protected void mystartClient(String localserver) { HttpCommandExecutor delegate = null; try { URL driverserver = new URL(localserver); delegate = new HttpCommandExecutor(driverserver); } catch (MalformedURLException e) { e.printStackTrace(); } try { delegate.getAddressOfRemoteServer().openConnection().connect(); super.setCommandExecutor(delegate); System.out.println("Connect to the existing browser"); } catch (IOException e) { System.out.println(e.getMessage()); System.out.println("can not connect" + delegate.getAddressOfRemoteServer() + " and " + delegate); } } protected void mystartSession(String sessionID) { if (!sessionID.isEmpty()) { super.setSessionId(sessionID); } Command command = new Command(super.getSessionId(), DriverCommand.NEW_SESSION); Response response; try { response = super.getCommandExecutor().execute(command); } catch (IOException e1) { e1.printStackTrace(); System.out.println("Can't use this Session"); return; } Map<String, Object> rawCapabilities = (Map<String, Object>) response.getValue(); DesiredCapabilities returnedCapabilities = (DesiredCapabilities) super.getCapabilities(); if (returnedCapabilities == null) { returnedCapabilities = new DesiredCapabilities(); } for (Map.Entry<String, Object> entry : rawCapabilities.entrySet()) { // Handle the platform later if (CapabilityType.PLATFORM.equals(entry.getKey())) { continue; } returnedCapabilities.setCapability(entry.getKey(), entry.getValue()); } String platformString = (String) rawCapabilities.get(CapabilityType.PLATFORM); Platform platform; try { if (platformString == null || "".equals(platformString)) { platform = Platform.ANY; } else { platform = Platform.valueOf(platformString); } } catch (IllegalArgumentException e) { // The server probably responded with a name matching the os.name // system property. Try to recover and parse this. platform = Platform.extractFromSysProperty(platformString); } returnedCapabilities.setPlatform(platform); this.mycapabilities = returnedCapabilities; } @Override public void quit() { try { execute(DriverCommand.QUIT); } catch (Exception e) { e.printStackTrace(); } } public Capabilities getCapabilities() { return mycapabilities; } @Override public Object executeScript(String script, Object... args) { if (!mycapabilities.isJavascriptEnabled()) { throw new UnsupportedOperationException( "You must be using an underlying instance of WebDriver that supports executing javascript"); } // Escape the quote marks script = script.replaceAll("\"", "\\\""); Iterable<Object> convertedArgs = Iterables.transform(Lists.newArrayList(args), new WebElementToJsonConverter()); Map<String, ?> params = ImmutableMap.of("script", script, "args", Lists.newArrayList(convertedArgs)); return execute(DriverCommand.EXECUTE_SCRIPT, params).getValue(); } @Override public Object executeAsyncScript(String script, Object... args) { if (!mycapabilities.isJavascriptEnabled()) { throw new UnsupportedOperationException( "You must be using an underlying instance of " + "WebDriver that supports executing javascript"); } // Escape the quote marks script = script.replaceAll("\"", "\\\""); Iterable<Object> convertedArgs = Iterables.transform(Lists.newArrayList(args), new WebElementToJsonConverter()); Map<String, ?> params = ImmutableMap.of("script", script, "args", Lists.newArrayList(convertedArgs)); return execute(DriverCommand.EXECUTE_ASYNC_SCRIPT, params).getValue(); } }
开启浏览器 :
import java.net.URL; import java.util.Set; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.HttpCommandExecutor; public class AppTest { public static void main(String[] args) { System.setProperty("webdriver.ie.driver", "D:/auto/public/selenium/webdriver/win64/IEDriverServer.exe"); InternetExplorerDriver driver = new InternetExplorerDriver(); String sessionid = driver.getSessionId().toString(); System.out.println("session ID --->" + sessionid); URL url = ((HttpCommandExecutor)(driver.getCommandExecutor())).getAddressOfRemoteServer(); System.out.println("url --->" + url.toString()); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); driver.get("http://www.google.com"); WebElement key =driver.findElement(By.id("lst-ib")); key.sendKeys("abc"); Set set = driver.getWindowHandles(); // driver.getCommandExecutor().getAddressOfRemoteServer().toString(); } }
不关闭浏览器,另外一段代码复用刚开启的浏览器 :
public class Apptest2 { public static void main(String[] args) { System.setProperty("webdriver.ie.driver", "D:/auto/public/selenium/webdriver/win64/IEDriverServer.exe"); InternetExplorerDriver driver = new MyIEDriver(); // driver.get("http://localhost:38005"); driver.get("http://www.baidu.com"); // driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); // WebElement key =driver.findElement(By.id("lst-ib")); // key.sendKeys("g"); } }
相关推荐
标题"使用已打开的浏览器"提示我们将讨论如何利用Selenium与已启动的浏览器实例进行交互,而非每次都启动一个新的浏览器会话。 在某些情况下,我们可能希望利用已打开的浏览器窗口进行测试,例如,当需要在特定的...
Selenium WebDriver 是一款广泛使用的自动化测试工具,专为Web应用程序设计。它允许程序员模拟真实用户在浏览器中的操作,如点击、输入、导航等,从而进行功能性和兼容性测试。了解其工作原理对于优化自动化测试脚本...
运行此脚本,如果能正确输出网页标题,则证明Selenium已成功安装并可正常使用。 **1.4 浏览器驱动配置** 为了使Selenium能够控制特定版本的浏览器,需要下载对应的驱动程序,并将其添加到环境变量中。 - **1.4.1 ...
**Selenium WebDriver** 是一个广泛使用的自动化测试工具,主要用于网页应用程序的测试。它模拟了真实用户的浏览器行为,允许测试人员编写脚本来控制浏览器执行各种操作,如点击按钮、填写表单、导航等。WebDriver ...
**Selenium 3.0 WebDriver + Python 3.0 实例参考** Selenium 是一个强大的自动化测试工具,尤其适用于Web应用程序。Selenium 3.0是该框架的一个重要版本,它增强了WebDriver接口,并且提供了与多种浏览器兼容的...
本节介绍如何使用 Selenium WebDriver 执行一些基本的浏览器操作。 ##### 打开浏览器 - **使用默认路径的 Firefox**:直接创建 `FirefoxDriver` 实例即可。 - **使用指定路径的 Firefox**:可以通过设置系统属性 `...
- 使用 `webdriver.Chrome()` 创建一个 Chrome 浏览器实例。 - `driver.get(url)` 方法加载网页。 - `driver.quit()` 退出并关闭浏览器。 #### 四、元素定位 - **3.1 id 和 name 定位**: - 使用 `find_element...
当你在使用Selenium进行自动化测试时,需要安装特定的浏览器驱动,以便Webdriver可以与浏览器交互。不同的浏览器有不同的驱动程序,而且每个驱动程序通常对应特定版本的浏览器。 3. 安装Firefox浏览器驱动 Firefox...
2. 创建`WebDriver`实例,通常命名为`driver`,用于与浏览器交互。 3. `@BeforeMethod`注解的方法会在每个测试方法前执行,可以用来初始化浏览器。 4. `@Test`注解的方法定义实际的测试逻辑,例如,访问网页。 5. `@...
**Selenium + WebDriver + Python 第三版:网页自动化测试与应用** Selenium 是一个强大的开源自动化测试工具,它主要用于Web应用程序的测试。Selenium 支持多种编程语言,包括Python,使得开发者和测试工程师能够...
WebDriver是Selenium的最新版本,它提供了一个跨浏览器的API,支持多种浏览器如Chrome、Firefox、IE等。WebDriver通过发送HTTP请求到浏览器控制台,实现了对浏览器的直接控制,使得测试脚本更接近于用户的实际操作。...
在Selenium框架中,IEWebDriver是专为Internet Explorer浏览器设计的一个WebDriver实现,允许开发者编写可跨浏览器运行的自动化测试脚本。 **一、什么是WebDriver?** WebDriver 是一种API,它提供了对浏览器的直接...
Selenium Webdriver是一款强大的自动化测试工具,用于模拟真实用户在浏览器中的交互行为。它支持多种编程语言,如Java、Python、C#等,且兼容多种浏览器,包括Chrome、Firefox、IE和Edge等。Selenium的核心理念是...
# 创建 Chrome 浏览器实例 driver = webdriver.Chrome() # 访问 Google 主页 driver.get('https://www.google.com') # 查找搜索框元素 search_box = driver.find_element_by_name('q') # 输入搜索关键词 search_...
# 创建Edge浏览器实例 driver = webdriver.Edge(edge_driver_path) # 访问网页 driver.get("http://www.example.com") # 进行页面操作,如查找元素、点击按钮等 # 关闭浏览器 driver.quit() ``` 除了Edge浏览器...
本文将深入探讨Selenium WebDriver API 的核心概念和使用方法。 **1. WebDriver 概念** WebDriver 是Selenium的一个关键组件,它充当了测试代码与浏览器之间的桥梁。WebDriver API允许开发者直接与浏览器通信,模拟...
- 安装Chrome Driver/IE Driver:Selenium需要对应浏览器的WebDriver来驱动浏览器,如需使用Chrome,需要下载对应版本的ChromeDriver并配置环境变量。 3. 开始第一个脚本: 选择Python的原因可能是因为其简洁易学的...
因此,为了获得最佳的测试效果,建议使用与目标浏览器最新稳定版兼容的Selenium WebDriver版本。 **五、实战应用** 在实际项目中,开发者会创建一个测试类,初始化WebDriver实例,编写测试用例,然后执行测试。...
WebDriver不再局限于JavaScript,而是采用与浏览器内核更为直接的交互方式,如在IE中使用C++,在Firefox中使用XPCOM组件,从而能够规避JavaScript安全策略。WebDriver还允许模拟真实的键盘和鼠标操作,增强了模拟...