2015-10-15 177 views
0

我需要使用Python中的selenium webdriver從下拉列表中選擇一個元素。爲此,我檢查了有用的帖子,如Selecting a value from a drop-down option using selenium pythonhttps://sqa.stackexchange.com/questions/12029/how-do-i-work-with-dropdowns-in-selenium-webdriver?lq=1無法使用selenium webdriver從下拉列表中選擇元素

我說的是在接下來的塊中顯示的元素:

<div id="dayTab" style="height:20px" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"> 
<select class="input-small input-thin"> 
    <option value="2010">2010</option> 
    <option value="2011">2011</option> 
    <option value="2012">2012</option> 
    <option value="2013">2013</option> 
    <option value="2014">2014</option> 
    <option value="2015">2015</option> 
</select> 
</div> 

我試圖Select()

yearselect = Select(browser.find_element_by_css_selector("select.input-small.input-thin")) 
yearselect.select_by_value("2010") 

雖然它所處的元素(它),然後我得到的我不知道爲什麼,這哈

Traceback (most recent call last): 
File "C:\Users\elek2\workspace\webdriving\src\gotonch.py", line 119, in <module> 
yearselect.select_by_value("2010") 
File "C:\Python34\lib\site-packages\selenium\webdriver\support\select.py", line 79, in select_by_value 
self._setSelected(opt) 
File "C:\Python34\lib\site-packages\selenium\webdriver\support\select.py", line 195, in _setSelected 
option.click() 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 74, in click 
self._execute(Command.CLICK_ELEMENT) 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 453, in _execute 
return self._parent.execute(command, params) 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute 
self.error_handler.check_response(response) 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response 
raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible: Element is not currently visible and may not be manipulated 
(Session info: chrome=45.0.2454.101) 
(Driver info: chromedriver=2.19.346078 (6f1f0cde889532d48ce8242342d0b84f94b114a1),platform=Windows NT 6.1 SP1 x86_64) 

:發生第二線以下錯誤ppens但我也試圖用Click()的,而不是爲了「打開」下拉列表

yearselect =browser.find_element_by_css_selector("select.input-small.input-thin").click() 
yearselect.select_by_value("2010") 

和元素是可見的,但後來我得到這個:

Traceback (most recent call last): 
File "C:\Users\elek2\workspace\webdriving\src\gotonch.py", line 118, in <module> 
yearselect = browser.find_element_by_css_selector("select.input-small.input-thin").click() 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 74, in click 
self._execute(Command.CLICK_ELEMENT) 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webelement.py", line 453, in _execute 
return self._parent.execute(command, params) 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute 
self.error_handler.check_response(response) 
File "C:\Python34\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response 
raise exception_class(message, screen, stacktrace) 
selenium.common.exceptions.ElementNotVisibleException: Message: element not visible 
(Session info: chrome=45.0.2454.101) 
(Driver info: chromedriver=2.19.346078 (6f1f0cde889532d48ce8242342d0b84f94b114a1),platform=Windows NT 6.1 SP1 x86_64) 

爲什麼元素依舊如果我能夠找到下拉列表並選擇它,則不可見?

編輯

評論後LINGS我意識到有不僅是一個與我以前所使用的CSS name元素。

我在上面的塊之後,但有另一個塊之前引用,而不是div id="dayTab"...div id="monthTab"...顯然是不可見的。我如何參考我想要的標籤,沒有標識。

+0

您是否確切知道頁面上是否只有一個元素使用css'select.input-small.input-thin',並且該元素是您的元素?您可以點擊另一個具有相同css且不可見的選擇。 – LINGS

+0

@LINGS你說得對,這是問題,謝謝。我將編輯我的OP,因爲我不知道如何選擇正確的。 –

回答

0

這是相當簡單畢竟,我取代了最初:

yearselect = Select(browser.find_element_by_css_selector("select.input-small.input-thin")) 
yearselect.select_by_value("2010") 

與此:

yearselect = Select(browser.find_element_by_css_selector("#dayTab > select.input-small.input-thin")) 
yearselect.select_by_value("2010") 

只有找到正確的CSS(或XPath)的問題。諸如XPath Helper之類的Chrome插件可能對此有所幫助。有關CSS選擇器的其他提示,請參閱here。很高興萬一我幫助其他用戶避免了這種惱人的錯誤。

相關問題