如何使用Selenium Java定位元素

时间:2019-04-16 06:24:52

标签: selenium-webdriver xpath css-selectors webdriver webdriverwait

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

我的代码:

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

2 个答案:

答案 0 :(得分:0)

要找到所需的元素,可以使用以下任一Locator Strategies

  • 使用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")
    

答案 1 :(得分:0)

Id和class是网络元素的两个属性。以唯一地标识一个Web元素(使用一个ID),并使用类,标记名等常用属性来标识Web元素。 因此编写具有id属性的xpath会给您唯一的匹配。

答案:driver.findElement(By.id(“ txtAnswer”))。sendKeys(“ green”);