2016-12-15 7 views
1

Я пытаюсь создать приложение, которое собирает некоторые данные. Я использую Python 2.7 с Scrapy и Selenium в Windows 10. Я делал это только с несколькими веб-страницами ранее, однако я не могу выбрать или нажать кнопку со следующего веб-сайта.Невозможно выбрать элемент с веб-страницы javascript с помощью Python scrapy и Selenium

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

не в состоянии нажать на Боттона меченый «Поиск разрешений/Жалобы»

Я использовал Chrome Dev инструменты для того, чтобы осмотреть XPaths и т.д.

Вот код, который я использую:

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

Андерссон гений. Спасибо, что исправил это. –

 Смежные вопросы

  • Нет связанных вопросов^_^