如何在扩展列表中找到一个元素

时间:2014-05-05 22:03:58

标签: python selenium

我有点问题。我正在写一个自动测试,必须转到网页,输入一些键进行搜索,然后转到高级搜索选项,从列表中选择一个并搜索。关键是,我完全不知道如何在列表中定位元素。它看起来像这样:http://www.e-podroznik.pl/public/searcherFinal.do。如果您点击“więcejopcji”,您将获得有关旅程的选项列表。我的问题:如何使用python selenium在这个扩展的“więcejopcji”列表中找到元素?我已尝试过所有内容,从find_element_by *到execute_script;什么都行不通我收到“无法找到元素”,“不允许复合”等错误。

HTML:

<div class="advanced-searcher dNone more-options" style="display: block;">

    <label class="lblDepartureArrival"></label>
    <label class="lblRadio frmButtonFlat lblDeparture"></label>
    <label class="lblRadio frmButtonFlat lblDeparture"></label>
    <span class="lblOmmit"></span>
    <label class="lblCaptionCarrierType"></label>
    <label class="lblCarrierType lblCheckbox frmButtonFlat carrierType-bus"></label>
    <label class="lblCarrierType lblCheckbox frmButtonFlat carrierType-rail"></label>
    <label class="lblCarrierType lblCheckbox frmButtonFlat carrierType-aut"></label>
    <label class="lblCarrierType lblCheckbox frmButtonFlat carrierType-city"></label>
    <label class="lblCaptionJourneyMode"></label>
    <span class=""></span>
    <span class=""></span>
    <span class=""></span>
    <label class="lblSort">
        <span class="fldCaption">

            Sortuj według:

        </span>
        <span class="fldContainer">
            <select id="sortTypeV_1399324651976" name="formCompositeSearchingResults.formCompositeSearcherFinalH.sortTypeV" style="display: none;">
                <option selected="selected" value="departure"></option>
                <option value="time"></option>
                <option value="price"></option>
            </select>
            <span class="frmDropdown"></span>
        </span>
    </label>
    <a class="lnkSwitchSearcherType" title="Wyszukiwarka zaawansowana" href="/public/searcher.do?method=task&advanced=false"></a>

</div>

我特别需要扩展列表:

"<select id="sortTypeV_1399324651976" name="formCompositeSearchingResults.formCompositeSearcherFinalH.sortTypeV" style="display: none;">" and then click "<option value="time"></option>

这不起作用:

def do_the_advanced_search(self): 
        self.driver.find_element_by_xpath('//*[@id="frm_1399323992507"]/fieldset/div/div[2]/label[3]').click()
        time.sleep(3)

这两个:

self.driver.execute_script("document.getElementById('sortTypeV_1399324651976').style=='display: inline block';")

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

要展开包含下拉列表的部分,您可以使用:

self.driver.find_element_by_css_selector("a>span.imageSprite.sprite-label-left").click()

然后您可以使用execute_script设置值:

self.driver.execute_script("document.getElementsByClassName('current').value = 'Najkrótszy czas';")

select本身通过style=display:none;隐藏,因此无法直接操作。