Не удалось найти строку поиска - PullRequest
1 голос
/ 24 апреля 2019

Мне нужно найти строку поиска для поиска текста, указанного в поле ниже, и щелкнуть по нему.Я попробовал приведенный ниже код, но не смог выполнить действие.

Этот код не был нажат по строке поиска: -

driver.findElement(By.xpath("//input[@class='Searchbar__search-field___2FQ0S search-input']")

Изображение HTML: enter image description here

Ответы [ 4 ]

1 голос
/ 24 апреля 2019

Желаемыми элементами являются ReactJS элементы, включенные в Модальное диалоговое окно , поэтому, чтобы найти элемент, вы должны заставить WebDriverWait , чтобы элемент былкликабельный и вы можете использовать любую из следующих стратегий локатора :

  • cssSelector:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("div.modal-body#promotion-url-modal-body input.search-input[placeholder='Find a promotion...']"))).click();
    
  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='modal-body' and @id='promotion-url-modal-body']//input[contains(@class, 'search-input') and @placeholder='Find a promotion...']"))).click();
    
0 голосов
/ 24 апреля 2019

Можете ли вы предоставить нам ссылку на веб-сайт, с которым вы пытаетесь взаимодействовать? Скорее всего, элемент находится в пределах iframe, и в этом случае вам нужно переключиться на iframe, прежде чем вы сможете взаимодействовать с указанным элементом.

Убедитесь, что ваше окно развернуто, поскольку это может помешать встроенным фреймам:

driver.manage().window().maximize();

Тогда вам нужно будет найти идентификатор iframe, используя что-то вроде firebug

Как только у вас есть идентификатор:

driver.switchTo().frame("xxxxxxxxx");

взаимодействует с указанным элементом внутри iframe:

driver.findElement(By.xpath("html/body/a/img")).click();
0 голосов
/ 24 апреля 2019

Вам нужно переключиться на новый кадр, прежде чем делать что-либо в модальном диалоге?Сделайте это:

driver.switchTo().activeElement();

И попробуйте следующий локатор CSS:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("#promotional-url-modal-overlay input[placeholder='Find a promotion...']"))).click();
0 голосов
/ 24 апреля 2019
Класс

можно изменить, нужно проверить HTML на неудачном шаге.В качестве обходного пути вы можете использовать более общий xpath: driver.findElement(By.xpath("//input[contains(@class, 'search-input')]"))

...