2014-02-10 3 views
0

Я пытаюсь использовать Ghost.py для создания веб-скрепок. Я пытаюсь выполнить ссылку, но Ghost, похоже, не оценивает javascript и не перейдя по ссылке. Моя проблема в том, что я нахожусь в сеансе HTTPS и не могу использовать перенаправление. Я также рассмотрел другие варианты (например, селен), но я не могу установить браузер на машине, которая будет запускать скрипт. У меня также есть оценка javascript, поэтому я не могу использовать mechanize.Перейдите по ссылке Ghost.py

Вот что я делаю ...

## Open the website 
page,resources = ghost.open('https://my.url.com/') 

## Fill textboxes of the form (the form didn't have a name) 
result, resources = ghost.set_field_value("input[name=UserName]", "myUser") 
result, resources = ghost.set_field_value("input[name=Password]", "myPass") 

## Submitting the form 
result, resources = ghost.evaluate("document.getElementsByClassName('loginform')[0].submit();", expect_loading=True) 

## Print the link to make sure that's the one I want to follow 
#result, resources = ghost.evaluate("document.links[4].href") 

## Click the link 
result, resources = ghost.evaluate("document.links[4].click()") 

#print ghost.content 

Когда я смотрю на ghost.content, я до сих пор на той же странице и результат пуст. Я заметил, что когда я добавляю expect_loading = True при попытке оценить клик, я получаю ошибку тайм-аута.

Когда я пытаюсь запустить JavaScript в консоли инструментов Chrome Developper, я получаю

event.returnValue устарела. Вместо этого используйте стандартный код event.preventDefault().

но страница правильно загружает связанный URL.

Любые идеи приветствуются.

Charles

ответ

0

Я думаю, вы используете для этого неправильные методы.
Если вы хотите отправить форму есть специальный метод, который:

page, resources = ghost.fire_on("loginform", "submit", expect_loading=True) 

Также есть специальный метод ghost.py для выполнения нажмите:

ghost.click('#some-selector') 

другой possibilty, если вы просто хотите чтобы открыть эту ссылку:

link_url = ghost.evaluate("document.links[4]")[0] 
ghost.open(link_url) 

Вам нужно только найти правильные селектора для этого.
Я не знаю, на какой странице вы хотите выполнить задачу, поэтому я не могу исправить ваш код. Но я надеюсь, что это поможет вам.

+0

Спасибо за ответ, я должен быть в состоянии попробовать это завтра. – user294186

+0

Я получаю TimeoutError от альтернативы, которую вы предложили на форме submit. Во всяком случае, я пробовал [code] ghost.click ('a [href = "/ Internet/Home"]') [/ code] , который ведет меня к тому же ... браузер Ghost не следует и остается на той же странице. – user294186

+0

Я получаю то же самое от [code] ghost.open (link_url ['href']) [/ code] К сожалению, я стесняюсь размещать код страницы, так как он приводит к моей учетной записи ISP, чтобы получить некоторую статистику bandwitdh. .. – user294186

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