如何使用 Selenium Java 定位元素

How to locate the element using Selenium Java

<input name="txtAnswer" class="box1" id="txtAnswer" type="text" maxlength="20">

我的代码:

driver.findElement(By.name("txtAnswer")).sendKeys("green");

要找到所需的元素,您可以使用以下任一方法 :

  • 使用cssSelector:

    driver.findElement(By.cssSelector("input#txtAnswer[class^='box'][name='txtAnswer']")).sendKeys("green")
    
  • 使用xpath:

    driver.findElement(By.xpath("//input[starts-with(@class, 'box') and @id='txtAnswer'][@name='txtAnswer']")).sendKeys("green")
    

更新

当您看到错误无法定位元素时,您需要为 元素引入 WebDruverWait可点击,您可以使用以下任一解决方案:

  • 使用cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#txtAnswer[class^='box'][name='txtAnswer']"))).sendKeys("green")
    
  • 使用xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[starts-with(@class, 'box') and @id='txtAnswer'][@name='txtAnswer']"))).sendKeys("green")
    

Id 和 class 是网络元素的两个属性。使用唯一(一个)id 来标识 web 元素,并使用 class、标签名称等通用属性来标识 web 元素。 所以用 id 属性编写 xpath 会给你唯一的匹配。

答案:driver.findElement(By.id("txtAnswer")).sendKeys("green");