Я не могу найти какие-либо элементы на веб-странице с помощью pytest, но я могу найти те же элементы с помощью консоли - PullRequest
0 голосов
/ 10 октября 2019

Я могу найти элемент (используя css или xpath) на странице в консоли (F12).

$$("span.menu-item[data-vars-category-name='Most Popular']")

Но я не могу найти те же элементы, используя Selenium (pytest)

driver.find_element_by_css_selector("span[data-vars-category-name='Most Popular']”)

код элемента:

<span tabindex="0" role="button" on="tap:category--1.scrollTo(duration=200),
                    AMP.setState({selectedCategoryId: -1, showDropdown: false})" data-vars-category-name="Most Popular" class="menu-item item-1 category-selector " data-amp-bind-class="'menu-item item-1 category-selector ' + (
                      ((!selectedCategoryId &amp;&amp; -1 == -2) ||
                      -1 == selectedCategoryId) ? 'selected' : ''
                    )" i-amphtml-binding="" i-amphtml-key="10">Most Popular</span>

Что я делаю не так? Я, вероятно, должен предпринять дополнительные шаги, чтобы найти элементы на странице.

!!! Не могу найти ни одного элемента на странице: https://actions.google.com/u/0/amp?url=https://amplify.doordash.com/doordash/restaurant/aHR0cHM6Ly93d3cuZG9vcmRhc2guY29tL3N0b3JlL3BpenotYS1jaGljYWdvLXBhbG8tYWx0by0zNTMv%3Fv%3D090020190919&projectId=doordash-2e718&state=%7B%22phoneNumber%22:%22%22,%22isPickupOrder%22:%22true%22%7D&ei=_lueXbfaEeT19AOf_amQBg&source=1

1 Ответ

0 голосов
/ 10 октября 2019

Ваш cssselector работает. Есть iframe. Вы можете использовать приведенный ниже код для переключения на фрейм

driver.switch_to.frame(iframe)

После перехода в iframe, вот как вы можете вернуться к содержимому по умолчанию:

driver.switch_to.default_content()

Я пытался использовать ниже Javaкод и все заработало

        List<WebElement> frames = driver.findElements(By.tagName("iframe"));
        System.out.println("Frame Size: "+ frames.size());              
        for(WebElement frame:frames){
            try {
                driver.switchTo().frame(frame);
                break;
            }catch(NoSuchFrameException e) {
                e.printStackTrace();
            }
        }

        driver.findElement(By.cssSelector("span[data-vars-category-name='Most Popular']")).click();
...