Пробовал с селектором CSS и xpath, но ничего не работает для кнопки, которую мне нужно нажать - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь найти элемент, который на самом деле является кнопкой, но каждый раз, когда он показывает «Невозможно найти такой элемент».

HTML-код:

<div class="details__selectItem"> 
    <a href="/product/lens?sku=4234_BLACKCRYSTAL" class="btn primary block" style="">
        Select Lens Type
    </a>
</div>

Я пробовал со следующими локаторами:

driver.findElement(By.linkText("Select Lens Type")).click();

driver.findElement(By.xpath("/html/body/div[4]/div/div[1]/div[2]/div/div[3]")).click();

driver.findElement(By.cssSelectors("a.primary.block[href='/product/lens?sku=4234_BLACKCRYSTAL']")).click();

driver.findElement(By.className("details__selectItem")).click();

enter image description here

1 Ответ

0 голосов
/ 22 ноября 2018

Наиболее вероятный сценарий, это то, что элемент просто не существует, когда вы пытаетесь его найти.Тем более, что вы пробовали четыре разных селектора.Это может произойти, когда страница загружается не полностью, когда вы пытаетесь найти элемент.Вы можете реализовать функцию ожидания, которая будет ожидать указанное количество секунд, пока элемент не будет существовать, быть видимым или активным.Я не уверен, на каком языке ваш Selenium, но вот версия на Java:

int timeoutSeconds = 30;
By locator = By.id("element-id"); //use any 'By' here

WebDriverWait wait = new WebDriverWait(driver, timeoutSeconds);
wait.until(ExpectedConditions.presenceOfElementLocated(locator)); 
driver.findElement(locator).click();

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

wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
wait.until(ExpectedConditions.elementToBeClickable(locator));

Если вы используете язык, отличный от Java, вам придется искать API конкретного языка, чтобы найти правильный синтаксис.Насколько я знаю, Selenium не одинаков для разных языков, но я ожидаю, что он будет доступен в большинстве из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...