2015-03-02 431 views
1

我使用Selenium和Python3自動將數據輸入網站。 我已經試過尋找無處不在如何處理如果有多個選擇類的元素,但我不知道如何選擇手風琴切換[1]。硒上沒有任何反應,但它在任何瀏覽器上都能正常工作。此外,有沒有什麼辦法只使用常規的JavaScript或jQuery的命令?:Selenium Python document.getElementsByClassName()

accordion=find_element_by_class("accordion-toggle"[1]) 
accordion.click() 
#otheraccordion=find_element_by_css_selector("#AdvancedAddress > div.accordion-heading.in > div.accordion-toggle > span.accordionExpandCollapse") 
#otheraccordion.click() 
StreetNameField=driver.find_element_by_id("Advanced_FindMyParcel_PropertyStreetName") 
StreetNameField.send_keys("Sherman") 
ZipField=driver.find_element_by_id("Advanced_FindMyParcel_PropertyZip") 
ZipField.send_keys("90201") 
ZipButton=driver.find_element_by_id("btnSearchFindMyParcels") 
ZipButton.click() 

回答

0

您正在尋找find_element(s)_by_css_selector - reference here - 使用的CSS前綴」 .classname`指示類。

例如找到

<div class='theClass'> 

driver.find_elements_by_css_selector('.theClass') 

您還可以使用By語法:

driver.find_elements(By.CSS_SELECTOR, '.theClass') 

編輯
看來問題可能更多的是Clicking元素,而不是尋找它。

  • 確保元素可見
  • 對於Chrome瀏覽器,你可能需要模仿一下在此之前將鼠標懸停的元素 - 見Actions/ActionChains MoveToElement懸停在該元素。
  • 對於IE瀏覽器,您可能需要確保瀏覽器/框架獲得焦點,在元素點擊之前 - 您可能需要應用黑客攻擊,如one of these
+0

非常感謝。這也是問題的一部分。和CSS選擇器工作。 – 2015-03-05 21:39:04

1

實際上,你可以使用document.getElementsByClassName()通過execute_script()電話:

driver.execute_script("document.getElementsByClassName('accordion-toggle')[0].click();") 

但我不會再往對於這樣一個簡單的任務執行JavaScript。更容易找到元素使用find_element_by_class_name()

accordion = driver.find_element_by_class_name('accordion-toggle') 
accordion.click() 
+0

它工作完美。你的答案都有效。非常感謝。 – 2015-03-05 21:39:33