2016-12-15 1 views
1

auswählen Ich versuche, eine App zu erstellen, die einige Daten sammelt. Ich benutze Python 2.7 mit Scrapy und Selenium auf Windows 10. Ich habe dies bisher nur mit ein paar Webseiten gemacht, aber ich bin nicht in der Lage, einen Knopf von der folgenden Webseite auszuwählen oder anzuklicken.Kann nicht Element aus einer JavaScript-Webseite mit Python Scrapy und Selenium

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

Nicht in der Lage auf dem Botton "Sucherlaubnis/Beschwerden"

ich die Chrome Entwickler-Tools haben kennzeichnungs klicken verwendet, um die XPaths zu inspizieren etc.

Hier ist der Code, ich verwende:

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() 

Wenn Sie sich diesen Code ausführen, bekomme ich folgende Fehlermeldung:

NoSuchElementException: Nachricht: kein solches Element: Kann Element finden: { "Methode": "XPath", "Selektor": "// * @ id =" ctl00_PlaceHolderMain_TabDataList_TabsDataList_ctl01_LinksDataList_ctl00_LinkItemUrl "]"}

Ich habe hinzugefügt Alle Herrenhäuser von Schlaf und Wartezeiten usw., um sicherzustellen, dass die Seite vollständig geladen ist, bevor Sie die Auswahl versuchen. Ich habe auch versucht, den Linktext und andere Methoden zur Auswahl des Elements auszuwählen. Ich bin mir nicht sicher, warum diese Methode auf dieser Seite nicht funktioniert, wo sie bei anderen funktioniert. Während der Code ausgeführt wird, öffnet der WebDriver die Seite auf meinem Bildschirm und ich sehe die geladene Seite usw.

Jede Hilfe wäre willkommen. Danke ...

Antwort

0

Ziel Link innerhalb einer iframe gelegen, so dass Sie auf dieses Bild wechseln müssen in der Lage sein eingebettete Elemente zu handhaben:

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

Sie könnten auch mit driver.switch_to_default_content()

wechseln müssen zurück
+0

Andersson ist Genie. Danke, das hat es behoben. –

Verwandte Themen