Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

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

xpath
webdriver
java
Теги: #<Tag:0x00007f7b6496b478> #<Tag:0x00007f7b6496b338> #<Tag:0x00007f7b6496b180>

#1

Тестирую оформление заказа у одного туроператора. У меня проблема с доступом к кнопке. Я мало знаком с js, но мне кажется что элементы генерируются скриптами. В общем я мало что понимаю именно в работе этой странице. Задайте мне вектор в каком направлении двигаться. К некоторым элементам я могу обращаться. Например к тем что находятся в header страницы. Но мне нужна кнопка “Больше опций”. Сам адрес страницы https://global.natalie-tours.ru/b2c/ на нее надо перейти с страницы https://www.natalie-tours.ru/
Вот как я пытаюсь это сделать

public class OrderTest {
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();

    @Before
    public void SetUp() throws Exception {
        System.setProperty("webdriver.gecko.driver", "C:\\Users\\egor\\Documents\\geckodriver.exe");
        driver = new FirefoxDriver();
        baseUrl = "https://www.natalie-tours.ru";
    }

    @Test
    public void TestOrder() throws Exception{
        this.driver.get(baseUrl);
        this.driver.manage().window().maximize();
        WebElement countries = this.driver.findElement(By.id("countries"));
        countries.click();
        Select dropdownCountry = new Select(countries);
        dropdownCountry.selectByValue("18");
        WebElement myChosenCountry = dropdownCountry.getFirstSelectedOption();
        myChosenCountry.sendKeys(Keys.ENTER);
        String parentHandle = this.driver.getWindowHandle();
        WebElement selectZone = this.driver.findElement(By.id("zones"));
        selectZone.click();
        Select dropdownZone = new Select((selectZone));
        dropdownZone.selectByValue("16");
        WebElement myChosenZone = dropdownZone.getFirstSelectedOption();
        myChosenZone.sendKeys(Keys.ENTER);
        WebElement searchButton = this.driver.findElement(By.cssSelector("input[type=\"submit\"]"));
        searchButton.click();
        Thread.sleep(10000);
        Set<String> windows = this.driver.getWindowHandles();
        System.out.println(windows.size());
        Iterator iterator = windows.iterator();
        String currentWindowId;

        while (iterator.hasNext()){
            currentWindowId = iterator.next().toString();
            if (!currentWindowId.equals(parentHandle)){
                this.driver.switchTo().window(currentWindowId);
                WebElement buttonOpt = this.driver.findElement(By.xpath("//*[@id=\"moreInfo1293951883\"]/button/span"));
                buttonOpt.click();
            }
        }

(Сергей Кузьмин) #2

там у вас

iframe id="STD_SEARCHER"

#3

Спасибо! Действительно так. Раньше я никогда не работал со фреймами.