Я пытаюсь навести указатель мыши на вкладку категории «Мужчины» и выбрать категорию «Рубашки» на этом Веб-сайт. Однако я не могу щелкнуть категорию «рубашки» в элементе «Мужчины», также я не получаю никаких сообщений об ошибках. Вот мой код:
public void PurchaseItemTest() throws InterruptedException, IOException {
Thread.sleep(3000);
//util.clickbyXpath(Constants.MENCATEGORYTAB);
WebElement element = util.getdriver().findElement(By.xpath("//a[@class='accord-header' ]"));
Actions action = new Actions(util.getdriver());
action.moveToElement(element).moveToElement(util.getdriver().findElement(By.xpath("//a[@class='accord-header' and contains(.,'Men')]"))).moveToElement(util.getdriver().findElement(By.xpath("//a[@title='Shirts']"))).click().build().perform();
@DebanjanB, как вставить сюда соответствующий HTML-код. На самом деле, когда я копирую и вставляю HTML-код, сюда вставляется огромное количество HTML-кода.




Это работает:
final By DROPDOWN = By.cssSelector("li[class='atg_store_dropDownParent']");
final By DROPDOWN_LINK = By.cssSelector("a[class='accord-header ']");
List<WebElement> dropdowns = new WebDriverWait(util.getDriver(), 5)
.until(ExpectedConditions.presenceOfAllElementsLocatedBy(DROPDOWN));
WebElement men = dropdowns.stream()
.flatMap(dropdown -> dropdown.findElements(DROPDOWN_LINK).stream())
.filter(link -> link.getText().equals("MEN"))
.findFirst()
.orElse(null);
if (men != null) {
new WebDriverWait(util.getDriver(), 5)
.until(ExpectedConditions.elementToBeClickable(men));
Actions action = new Actions(util.getDriver());
action.moveToElement(men).build().perform();
new WebDriverWait(util.getDriver(), 5)
.until(ExpectedConditions.elementToBeClickable(SHIRTS))
.click();
}
Ваш xpath для вкладки категории Men показался мне шатким. При наведении курсора обязательно дождитесь, пока ссылка «Рубашки» станет активной, прежде чем нажимать. Также избегайте использования Thread#sleep() с Selenium. Вместо этого используйте Явные ожидания.
Он работает абсолютно нормально, спасибо за ваши усилия .. Но я не могу понять, как это работает (особенно выпадающие списки). Не могли бы вы объяснить, что происходит в этом коде?
Обновите вопрос, указав соответствующий HTML для правильного анализа.