none
powershell selenium ymaps RRS feed

  • Вопрос

  • хочу кликнуть в браузере html элемент с помощью powershell + selenium
    Вот пример одного из элементов который я бы хотел кликнуть.

    <ymaps class="ymaps-2-1-38-html-placemark-overlay ymaps-2-1-38-user-selection-none" unselectable="on" style="z-index: 680; height: 0px; width: 0px; ; left: 998px; top: 614px;">
        <ymaps>
            <div class="search-map-result-view">
                <div class="search-map-result-view__icon">
                </div><div class="search-map-result-view__title">Бухгалтер Ляпич Т.Г.</div>
                <div class="search-map-result-view__fake-icon">
                </div>
            </div>
        </ymaps>
    </ymaps>

    отыскиваю элементы так
    $b = $ie.FindElementsByClassName("ymaps-2-1-38-html-placemark-overlay")

    Их находит 20 шт
    Если посмотреть в hmtl - то количество найденных совпадает с имеющимися
    Если попытаться кликнуть по какому нибудь

    $b[0].click()
    То получаем ошибку
    Element is not clickable at point (1147, 271). Other element would receive the click: <ymaps class="ymaps-2-1-38-events-pane ymaps-2-1-38-user-selection-none"
    https://lh3.googleusercontent.com/-Td98M2ow7Eo/VxG4meexCUI/AAAAAAAACx4/3-RNaz6_Mf4/s0/screenshot%2525202016-04-16%252520001.jpg

    Если попытаться найти
    $b = $ie.FindElementsByClassName("ymaps-2-1-38-events-pane")
    То такой элемент всего один и да его можно кликнуть.
    Но мне нужны все 20

    Если попытаться найти так
    $b = $ie.FindElementsByClassName("ymaps-2-1-38-html-placemark-overlay ymaps-2-1-38-user-selection-none")
    то получилчм ошибку
    invalid selector: Compound class names not permitted
    https://lh3.googleusercontent.com/-_0oK2-kGS3k/VxG6kEbQajI/AAAAAAAACyE/IAUBmCOyVEs/s0/screenshot%2525202016-04-16%252520002.jpg

    Вот url странички.
    https://yandex.ru/maps/157/minsk/?ll=27.561831%2C53.924047&z=12&text=%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80&sll=27.561831%2C53.924047&sspn=0.511551%2C0.124827
    вот html от этой странички
    http://www.everfall.com/paste/id.php?8mj5ky3re6oj

    Собственно как выбрать то что мне нужно.
    Чтобы по этому потом можно было кликать?
    Хочу кликнуть по жирным точкам на карте.
    16 апреля 2016 г. 4:17

Ответы

  • Использовать IE или FireFox, там таких проблем нет.

    или так:

    $el = $ie.FindElementsByClassName("search-map-result-view__title") | Where {$_.Text -match "ЛидерПартнер"} 
    $action = New-Object OpenQA.Selenium.Interactions.Actions($ie)
    $action.MoveToElement($el).Click().Perform()


    • Изменено KazunEditor 16 апреля 2016 г. 19:24
    • Помечено в качестве ответа korggrodno3 17 апреля 2016 г. 3:08
    16 апреля 2016 г. 19:18
    Отвечающий

Все ответы

  • $ie.FindElementsByClassName("search-map-result-view__title") | % Text
    
    Бухгалтерский Дозор ЧУП
    Агентство ОфисТайм
    ЛидерПартнер
    Джиайпи-Бухгалтер
    Деловой Квартал
    Бухгалтерские услуги
    Бизнесстарт
    
    Профессиональный Бухгалтер УП
    
    
    Хороший Бухгалтер
    
    Бухгалтер Ляпич Т.Г.
    
    
    СуТехБел
    
    Арлепта
    
    $ie.FindElementsByClassName("search-map-result-view__title") | Where {$_.Text -match "СуТехБел"} | Foreach {$_.Click()}
    
    $ie.SwitchTo().ActiveElement().Text.split("`n") -match "СутехБел|\+3"
    СуТехБел
    СуТехБел
    +375 (17) 288-21-71
    

    16 апреля 2016 г. 16:19
    Отвечающий
  • что то у меня выдает ошибку

    https://lh3.googleusercontent.com/-q2aHX5qODnM/VxKDH6jJ0cI/AAAAAAAACys/R7pZ0WOs72U/s0/screenshot%2525202016-04-16%252520002.jpg

    16 апреля 2016 г. 18:23
  • Использовать IE или FireFox, там таких проблем нет.

    или так:

    $el = $ie.FindElementsByClassName("search-map-result-view__title") | Where {$_.Text -match "ЛидерПартнер"} 
    $action = New-Object OpenQA.Selenium.Interactions.Actions($ie)
    $action.MoveToElement($el).Click().Perform()


    • Изменено KazunEditor 16 апреля 2016 г. 19:24
    • Помечено в качестве ответа korggrodno3 17 апреля 2016 г. 3:08
    16 апреля 2016 г. 19:18
    Отвечающий