Selenium CSS 选择器示例
我们可以使用定位器 CSS 选择器在 Selenium webdriver 中定位元素。创建 CSS 表达式的通用表达式为 tagname[attribute='value']。我们可以利用 id 和 class 属性来创建 CSS。
使用 id,CSS 表达式的语法为 tagname#id。例如,对于 CSS 表达式 - input#txt-loc,input 是标签名,txt-loc 是 id 属性的值。
使用类名,CSS 表达式的语法为 tagname.class。例如,对于 CSS 表达式 - input.txt-cls,input 是标签名,txt-cls 是 class 属性的值。
如果一个 webelement 元素(父元素)有 n 个子元素(子元素),并且我们想定位第 n 个子元素,CSS 表达式的语法为 nth-of –type(n)。

在上面的 html 中,如果我们想定位父元素 ul 的第四个 li,即具有文本“问答”的锚元素,则 CSS 应为 ul.reading li:nth-of-type(4)。类似地,要识别最后一个子元素,CSS 应为 ul.reading li:last-child。
对于具有动态值的属性,我们可以使用符号 ^= 来识别属性值以特定文本开头的元素。例如,input[name^='qa1'] [此处 input 是标签名,name 属性的值以 qa1 开头]。
对于具有动态值的属性,我们可以使用符号 $= 来识别属性值以特定文本结尾的元素。例如,input[class$='loc'] [此处 input 是标签名,class 属性的值以 loc 结尾]。
对于具有动态值的属性,我们可以使用符号 *= 来识别属性值包含特定子字符串的元素。例如,input[name*='sub'] [此处 input 是标签名,name 属性的值包含子字符串 sub]。
代码实现
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
public class CSSLocator{
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver",
"C:\Users\ghs6kor\Desktop\Java\geckodriver.exe");
WebDriver driver = new FirefoxDriver();
//implicit wait
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
//URL launch
driver.get("https://www.linkedin.com/");
//identify element
WebElement m = driver.
findElement(By.cssSelector("input[id='session_key']"));
//enter text
m.sendKeys("Java");
String s = m.getAttribute("value");
System.out.println("Attribute value: " + s);
//close browser
driver.close();
}
}输出

数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP