2016-08-11 2 views
0

Я пытаюсь использовать WWW :: Mechanize для выбора опции из выпадающего меню. Вот код, я прямо сейчас (только часть с возможностью выбора из выпадающего меню):WWW :: Mechanize- Выберите из выпадающего списка

use warnings; 
use WWW::Mechanize; 
my $url = 'http://genome.ucsc.edu/cgi-bin/hgBlat?command=start'; 
my $browser = WWW::Mechanize->new(); 
    $browser->get($url); 
    $browser->select('db', 'hg38'); 
    $browser->submit(); 

Выбор не работает.

Вот HTML для этого в раскрывающемся меню с места, где я вручную выбрал нужный вариант:

<select name="db"> = $0 
    <option selected value="hg38">Dec. 2013 (GRch38/hg38)</option> 
    <option value="hg19">Feb. 2009 (GRch17/hg19)</option> 
    <option value="hg18">Mar. 2006 (NCBI36/hg18)</option> 
    <option value="hg17">May 2004 (NCBI35/hg17)</option> 
    <option value="hg16">July 2003 (NCBI34/hg16)</option> 
</select> 

Как я могу использовать Mech, чтобы выбрать вариант? URL для данного сайта - «http://genome.ucsc.edu/cgi-bin/hgBlat?command=start».

ответ

1

Вы должны всегдаuse strict в верхней части каждой программы Perl вы пишете, особенно, прежде чем просить о помощи с вашим кодом. Он немедленно выявил бы проблему.

Ваш WWW::Mechanize объект находится в $browser, но вы позвонили $mech->select. $mech не был определен, поэтому вы получаете сообщение об ошибке, указывающее, что select не может быть вызван по неопределенному значению

+0

ah whoops, должен был использовать строгий. Однако даже после изменения браузера $ mech to $ выбор еще не сделан. Ошибок нет, но мой код выплевывал URL-адрес после нажатия кнопки «Отправить» в другом месте на странице, и результатом было то, что раскрывающийся список по-прежнему не работает. –

+1

@AdityaJ .: используйте '$ browser-> dump_forms', чтобы просмотреть статус форм на странице, чтобы вы могли проверить, работал ли ваш выбор. Возможно, вам придется использовать один из методов выбора формы, чтобы 'select' знал, с какой формой работать. – Borodin

+0

Это очень помогло, спасибо. –