【Selenium】4定位元素

本文介绍了使用Selenium进行Web自动化测试时的多种元素定位方法,包括ID、name、linkText等,并提供了相应的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

①id(idToFind):HTML的ID属性查找:唯一

Html:<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"/>

WebElement kw = driver.findElement(By.id("kw"));
System.out.println(kw);
kw.sendKeys("baoyu");

②name(nameToFind):HTML的name属性查找:不唯一

Html:<a class="lb" onclick="return false;" name="tj_login" href="https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F">登录</a>

Java:

WebElement tj_login = driver.findElement(By.name("tj_login"));
login.click();

③linkText(linkTextToFind):按链接的文本进行查找

WebElement login = driver.findElement(By.linkText("登录"));
login.click();

④PartiallinkText(partiallinkTextToFind):按链接的文本模糊进行查找

WebElement login = driver.findElement(By.linkText("登录"));
login.click();

⑤className(classNameToFind):按class属性进行查找(有不可见元素失败)

HTML:<a class="senior-search-link" href="//tieba.baidu.com/f/search/adv">高级搜索</a>
Java:
WebElement login = driver.findElement(By.className("lb"));

⑥TagName(TagNameToFind):按名称进行查找,返回第一个匹配项(有不可见元素失败)

HTML:<a class="senior-search-link" href="//tieba.baidu.com/f/search/adv">高级搜索</a>
Java:
WebElement tagname = driver.findElement(By.tagName("a"));
List<WebElement> tagnames = driver.findElements(By.tagName("a"));

⑦XPath(xPathToFind):

WebElement tagname = driver.findElement(By.xpath(".//*[@id='u1']/a[7]"));

⑧CSS

WebElement tagname = driver.findElement(By.cssSelector("html<body<div<input[type='button']"));

⑨jQuery

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

/**
* Created by Administrator on 2017/7/23.
*/
public class JQueryTest {
WebDriver driver;
JavascriptExecutor js;

@SuppressWarnings("unchecked")
@Test
public void JQueryTest() {
driver = new FirefoxDriver();
driver.get("https://www.baidu.com/");
js = (JavascriptExecutor) driver;
injectjQueryIfNeeded();
}

private void injectjQueryIfNeeded() {
if (!jQueryLoaded()) {
injectjQuery();
}
}

private void injectjQuery() {
js.executeScript("var headID="
+"document.getElementsByTagName(\"head\")[0];"
+"var newScript=document.createElement('script');"
+"newScript.type='text/javascript';"
+"newScript.src="
+"'http://ajax.gooleapis.com/ajax/"
+"libs/jquery/1.7.2/jquery.min.js';"
+"headID.appendChild(newScript);");
}

private boolean jQueryLoaded() {
Boolean loaded;
try {
loaded = (Boolean) js.executeScript("return" + "JQuery()!=null");
} catch (WebDriverException e) {
e.printStackTrace();
}
loaded = false;
return loaded;
}

}

⑩表格定位方法

<table width="400" border="1" id="table">
<tr>
<td align="left">消费项目....</td>
<td align="right">一月</th>
<td align="right">二月</th>
</tr>
<tr>
<td align="left">衣服</td>
<td align="right">1000元</th>
<td align="right">500元</th>
</tr>
<tr>
<td align="left">化妆品</td>
<td align="right">3000元</th>
<td align="right">500元</th>
</tr>
<tr>
<td align="left">食物</td>
<td align="right">3000元</th>
<td align="right">650.00元</th>
</tr>
<tr>
<td align="left">总计</td>
<td align="right">7000元</th>
<td align="right">1150元</th>
</tr>
</table>
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import java.util.List;

/**
* Created by Administrator on 2017/7/24.
*/
public class TableTest {
WebDriver driver;
@BeforeTest
public void before(){
System.setProperty("webdriver.firefox.bin", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
driver = new FirefoxDriver();
driver.get("http://localhost:3000/");
}
@AfterTest
public void quit(){
driver.quit();
}
@Test
public void tableTest() throws InterruptedException {
WebElement table = driver.findElement(By.id("table"));
List<WebElement> tr = table.findElements(By.tagName("tr"));
Assert.assertEquals(5,tr.size());
for (WebElement t:tr){
List<WebElement> td = t.findElements(By.tagName("td"));
for (WebElement d:td) {
System.out.print(d.getText()+"\t");

}
System.out.println("");
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值