2016-12-15 38 views
1

我試圖創建一個收集一些數據的應用程序。我在Windows 10上使用了Scrapy和Selenium的Python 2.7。我以前只使用過幾個網頁,但是我無法選擇或點擊以下網站上的按鈕。無法使用Python scrapy和Selenium從網頁選擇元素

以檢查的XPath我使用了Chrome瀏覽器開發工具

https://aca3.accela.com/Atlanta_Ga/Default.aspx

無法點擊鈕標有「搜索許可證/投訴」等

這裏的代碼我使用:

import scrapy 
from selenium import webdriver 

class PermitsSpider(scrapy.Spider): 
    name = "atlanta" 
    url = "https://aca3.accela.com/Atlanta_Ga/Default.aspx" 

    start_urls = ['https://aca3.accela.com/Atlanta_Ga/Default.aspx',] 

    def __init__(self): 
    self.driver = webdriver.Chrome() 
    self.driver.implicitly_wait(20) 

    def parse(self, response): 
    self.driver.get(self.url) 

    time.sleep(15) 
    search_button = self.driver.find_element_by_xpath('//*[@id="ctl00_PlaceHolderMain_TabDataList_TabsDataList_ctl01_LinksDataList_ctl00_LinkItemUrl"]') 
    search_button.click() 

如果運行的代碼,我得到以下錯誤:

NoSuchElementException異常:消息:沒有這樣的元件:無法找到元素:{ 「方法」: 「的xpath」, 「選擇器」: 「// * @ ID =」 ctl00_PlaceHolderMain_TabDataList_TabsDataList_ctl01_LinksDataList_ctl00_LinkItemUrl 「]」}

我已經添加所有的睡眠和等待莊園等等,以確保在嘗試選擇之前頁面已完全加載。我也試圖選擇鏈接文本和選擇元素的其他方法。不知道爲什麼這個方法不適用於這個頁面,它在其他人上爲我工作。在運行代碼時,WebDriver會在我的屏幕上打開頁面,並且我看到加載的頁面等。

任何幫助,將不勝感激。謝謝...

回答

0
所在的 iframe裏面,所以你必須切換到該框架能夠處理嵌入式元素

目標鏈接:

self.driver.switch_to_frame('ACAFrame') 
search_button = self.driver.find_element_by_xpath('//*[@id="ctl00_PlaceHolderMain_TabDataList_TabsDataList_ctl01_LinksDataList_ctl00_LinkItemUrl"]') 

您可能還需要與driver.switch_to_default_content()

切換回
+0

安德森是天才。謝謝,修復它。 –

相關問題