Попытка навести курсор мыши на вкладки и выполнить автоматический щелчок по определенному элементу в Selenium. - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь навести курсор мыши на вкладку категории «Мужчины» и выбрать категорию «Рубашки» на этом веб-сайте . Однако я не могу нажать на категорию "рубашки" в разделе "Мужчины", также я не получаю никакой ошибки. Вот мой код:

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();

1 Ответ

0 голосов
/ 10 мая 2018

Это работает:

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 для вкладки категории "Мужчины" действовал для меня странно. При наведении курсора, прежде чем нажимать ссылку «Рубашки», подождите, пока она не станет активной. Кроме того, избегайте использования Thread#sleep() с селеном. Вместо этого используйте Явные ожидания .

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