2023如何在 Selenium 中使用 CSS 选择器作为定位器?

 所属分类:web前端开发

 浏览:71次-  评论: 0次-  更新时间:2023-08-29
描述:更多教程资料进入php教程获得。 我们可以在Selenium webdriver中使用CSS选择器定位元素。创建CSS表达式的一般形式是tagname[attri...
更多教程资料进入php教程获得。

我们可以在Selenium webdriver中使用CSS选择器定位元素。创建CSS表达式的一般形式是tagname[attribute='value']。我们可以利用id和class属性来创建CSS。

使用id时,CSS表达式的语法是tagname#id。例如,对于CSS表达式 - input#txt-loc,input是tagname,txt-loc是id属性的值。

使用类名时,CSS表达式的语法是tagname.class。例如,对于CSS表达式 - input.txt-cls,input是tagname,txt-cls是class属性的值。

如果一个网页元素element(parent)有n个子元素(children),我们想要定位第n个子元素,CSS表达式的语法是nth-of-type(n)。

如何在 Selenium 中使用 CSS 选择器作为定位器?

在上面的html中,如果我们想要定位父级ul的第四个li,即文本为“Questions and Answers”的锚点元素,CSS应该是ul.reading li:nth-of-type(4)。同样,要识别最后一个子元素,CSS应该是ul.reading li:last-child。

对于具有动态值的属性,我们可以使用符号^=来识别属性值以特定文本开头的元素。例如,input[name^='qa1'] [这里input是tagname,name属性的值以qa1开头]。

对于具有动态值的属性,我们可以使用符号$=来识别属性值以特定文本结尾的元素。例如,input[class$='loc'] [这里input是tagname,class属性的值以loc结尾]。

对于具有动态值的属性,我们可以使用符号*=来识别属性值包含特定子字符串的元素。例如,input[name*='sub'] [这里input是tagname,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();
   }
}

 标签:
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!