Как выбрать выпадающий список из Selenium POM, если мой конструктор Select (By) не определен? - PullRequest
0 голосов
/ 18 апреля 2019

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

Вот что я сделал на Java-файле, где я храню объекты страницы:

package pageObjects;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;

public class TTPStorePage {

    WebDriver driver;

    public TTPStorePage(WebDriver driver) {
        this.driver = driver;
    }

    By size= By.id("size");
    By reset= By.className("reset_variations");
    By quantity= By.id("quantity_5cb788738ee07");
    By submit=By.cssSelector("button[type='submit']");
    By remove=By.xpath("//a[contains(@data-gtm4wp_product_id,'TS-TTP']");
    By contents=By.className("cart-contents");

    // Right here.
    public WebElement selectSize(int index) {
        Select drop = new Select(size);
        drop.selectByIndex(index);
    }

    public WebElement resetItems() {
        return driver.findElement(reset);
    }

    public WebElement quantityItem() {
        return driver.findElement(quantity);
    }

    public WebElement submitButton() {
        return driver.findElement(submit);
    }

    public WebElement removeItem() {
        return driver.findElement(remove);
    }

    public WebElement cartContents() {
        return driver.findElement(contents);
    }

}

Вот файл, в котором я запускаю сами тесты:

package SimpleProgrammer;

import java.io.IOException;
import org.testng.annotations.Test;
import resources.Base;
import pageObjects.TTPProductPage;
import pageObjects.TTPStorePage;

public class PurchaseApplication extends Base {

    @Test
    public void BuyItem() throws IOException {
        driver=initializeDriver();
        driver.get("https://simpleprogrammer.com/store/products/trust-the-process-t-shirt/");

        TTPProductPage pp= new TTPProductPage(driver);
        pp.TTPButton().click();
        TTPStorePage sp = new TTPStorePage(driver);
        // The problem child.
        sp.selectSize(2);
    }

}

Ответы [ 2 ]

3 голосов
/ 18 апреля 2019

У вас есть

Select drop = new Select(By.id("size"));

Но я думаю, что это должно быть

Select drop = new Select(driver.findElement(By.id("size")));
0 голосов
/ 18 апреля 2019

Вам нужно попробовать это: -

Классы поддержки WebDriver, называемые « Select », которые предоставляют полезные методы для взаимодействия с опциями выбора. Пользователь может выполнять операции с выпадающим списком, а также отменять выбор.

Select drop = new Select(driver.findElement(By.id("size")));

Для получения дополнительной информации перейдите по этой ссылке.

...