Как найти элемент с помощью Selenium Java - PullRequest
1 голос
/ 16 апреля 2019
<input name="txtAnswer" class="box1" id="txtAnswer" type="text" maxlength="20">

Мой код:

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

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Id и class - это два атрибута для веб-элемента. для уникальной идентификации веб-элемента (используется один) идентификатор и для идентификации веб-элементов используются общие свойства, такие как класс, имя тега и т. д. поэтому написание xpath с атрибутом id даст вам уникальное соответствие.

Ответ: driver.findElement (By.id ("txtAnswer")). SendKeys ("зеленый");

0 голосов
/ 16 апреля 2019

Чтобы найти нужный элемент, вы можете использовать любой из следующих Стратегий локатора :

  • Использование 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")
    
...