首页 > 代码库 > selenium学习笔记(2) 测试https网站

selenium学习笔记(2) 测试https网站

问题: selenium启动firefox的时候,会使用一个全新的profile作为启动的profile,即手工在firefox中的设置都无法使用。

解决: 找到手动启动firefox时的profile目录,测试程序中通过FirefoxProfile传递给WebDriver

1. 查看profile目录

命令行方式,进入firefox安装目录(多为: C:\Program Files (x86)\Mozilla Firefox),执行

firefox.ext -P

firefox.exe -ProfileManager

 

弹出profile管理画面,鼠标移到profile名上,会显示其路径

技术分享

 也可新建profile目录,从此对话框启动该profile的firefox,设置信任网站

2. 测试程序:

 1 @Test
 2 public void test() {
 3     System.setProperty("webdriver.gecko.driver", "E:/selenium/geckodriver.exe");
 4 
 5     //指向firefox的profile目录
 6     FirefoxProfile profile = new FirefoxProfile(new File("C:/Users/me/AppData/Roaming/Mozilla/Firefox/Profiles/mmi7kyn4.default"));
 7     profile.setAcceptUntrustedCertificates(true);
 8 
 9     //使用指定profile启动
10     WebDriver driver = new FirefoxDriver(profile);
11     driver.get("https://www.abcd.com");
12     
13     //输入用户名,密码,并提交
14     WebElement userId = driver.findElement(By.cssSelector("input[name=‘userId‘]"));
15     userId.sendKeys("username");
16     WebElement password = driver.findElement(By.cssSelector("input[name=‘password‘]"));
17     password.sendKeys("pasword");
18     
19     WebElement submit = driver.findElement(By.cssSelector("button"));
20     submit.click();
21     
22     //稍微等待应答
23     try {
24         Thread.sleep(3000);
25     } catch (InterruptedException e) {
26         e.printStackTrace();
27     }
28 
29     Assert.assertEquals("XXX", driver.getTitle());
30     driver.quit();
31 }

 关于延时等待的几个方法:

1) Thread.sleep() , 最笨的方法,但有时也很实用
2) 隐示等待,指当要查找元素没有马上出现时,告诉WebDriver查询Dom一定时间。默认值是0,但是设置之后,这个时间将在WebDriver对象实例整个生命周期都起作用。
WebDriver dr = new FirefoxDriver();
dr.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
3) 使用javascript
WebElement element = driver.findElement(By.xpath(test));
((JavascriptExecutor)driver).executeScript("arguments[0].style.border="5px solid yellow"",element);
4) 显示等待,推荐使用。
WebDriverWait wait = new WebDriverWait(dr, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("kw")));
显式等待可以自定义等待的条件,用于更加复杂的页面等待条件
(1)元素可用和可被单击:elementToBeClickable(By locator)
(2)元素处于被选中状态:elementToBeSelected(WebElement element)
(3)元素存在:presenceOfElementLocated(By locator)
(4)元素中包含特定的文本:textToBePresentInElement(By locator)
(5)页面元素值:textToBePresentInElementValue(By locator, java.lang.String text)
(6)标题 (title):titleContains(java.lang.String title)

 

参考地址:

http://www.cnblogs.com/lelelong/p/5523444.html

http://blog.sina.com.cn/s/blog_71bc9d680102wr4o.html

 

selenium学习笔记(2) 测试https网站