什么是浏览器元素?
元素是网页上存在的不同组件。我们在浏览时注意到的最常见元素是:
- 文本框
- CTA 按钮
- 图像
- 超链接
- 单选按钮 / 复选框
- 文字区 / 错误信息
- 下拉框 / 列表框 / 组合框
- Web表格 / HTML表格
- 框架
怎么定位和获取这些元素?
由于元素是使用这些属性定位的,因此我们将其称为“定位器”。定位器有:
- By.id:语法: driver.findElement(By.id(“xxx”));
- By.name:语法: driver.findElement(By.name(“xxx”));
- By.className:语法: driver.findElement(By.className(“xxx”));
- By.tagName:语法: driver.findElement(By.tagName(“xxx”));
- By.linkText:语法: driver.findElement(By.linkText(“xxx”));
- By.partialLinkText:语法: driver.findElement(By.partialLinkText(“xxx”));
- By.css:语法: driver.findElement(By.css(“xxx”));
- By.xpath:语法: driver.findElement(By.xpath(“xxx”));
上面的语法依次排列为【id查询】,【name查询】,【className类名查询】,【tagName标签查询】,【linkText文字查询】,【css样式查询】和【xpath查询】,他们的寻找的方法各有不同,但是实现效果是一样的。
浏览器元素上的操作
要开始测试网页,我们需要首先打开浏览器,然后通过提供正确的 URL 导航到该网页?看看下面的代码,我在上面复制了同样的代码。Firefox 浏览器将首先启动,然后将导航到 Facebook 的登录页面。
package seleniumWebDriver;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WebDriverClass
{
public static void main(String[] args)
{
System.setProperty("webdriver.gecko.driver", "files/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.get("https://www.facebook.com/");
driver.getTitle();
driver.quit();
}
}
然后再driver.getTitle();下面回车一下就开始写代码了
如果您想最大化浏览器窗口的大小,则可以使用下面的代码片段来实现。
driver.manage().window().maximize();
如果要为浏览器窗口设置自定义尺寸,则可以设置自己的尺寸,如下面的代码片段所示。
Dimension d = new Dimension(420,600);
driver.manage().window().setSize(d);
接下来是我所做自动化测试的一部分代码
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div/div/form/div[1]/div/div[1]/input")).sendKeys("softtest");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div/div/form/div[2]/div/div/input")).sendKeys("123456");
Thread.sleep(2000);
//获取验证码
WebElement yzm = driver.findElement(By.xpath("/html/body/div[1]/div/div/div/form/div[3]/div/div/div[2]/span"));
String text = yzm.getAttribute("textContent");
Thread.sleep(2000);
System.out.print(text);
driver.findElement(By.xpath("/html/body/div[1]/div/div/div/form/div[3]/div/div/div[1]/input")).sendKeys(text);
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div/div/form/div[4]/button")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[1]/div[2]/div[1]/div/ul/div[7]/li/div")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[1]/div[2]/div[1]/div/ul/div[7]/li/ul/div[2]/li/div")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[1]/div[2]/div[1]/div/ul/div[7]/li/ul/div[2]/li/ul/div[1]/a/li")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[1]/div[1]/div/button")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[1]/div/div/div/input")).sendKeys("test_one");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[2]/div/div/div[1]/div[1]/input")).sendKeys("00:00");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[2]/div/div/div[1]/div[2]/input")).sendKeys("01:00");
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[9]/div[1]/div[1]/div/div[2]")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[3]/div/div/div/div[1]/div/div")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[3]/div/div/div[1]/div[2]/div/div[2]/div/div[1]/div[2]/div[1]/div[2]/div[2]/div[4]/img")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[3]/div/div/div[1]/div[2]/div/div[2]/div/div[1]/div[2]/div[1]/div[2]/div[2]/div[5]/img")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[3]/div/div/div[1]/div[2]/div/div[2]/div/div[1]/div[2]/div[1]/div[2]/div[2]/div[6]/img")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[3]/div/div/div[1]/div[2]/div/div[2]/div/div[1]/div[2]/div[1]/div[1]/button")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[4]/div/div/div/span[3]")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[2]/div/div[2]/div/div/div/form/div[5]/div/div/button")).click();
String text2 = driver.findElement(By.xpath("/html/body/div[1]/div/div[2]/section/div[1]/div/div[1]/div[2]/div[1]/div[3]/table/tbody/tr[2]/td[2]/div/a/button")).getText();
Assert.assertFalse(text2.contains("test_one"));
没什么用,只是看看他的用处