我有点问题。我正在写一个自动测试,必须转到网页,输入一些键进行搜索,然后转到高级搜索选项,从列表中选择一个并搜索。关键是,我完全不知道如何在列表中定位元素。它看起来像这样: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';")
感谢您的帮助。
答案 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;
隐藏,因此无法直接操作。