2013-09-06 4 views
0

Я пытаюсь открыть vcard используя Selenium. Визитная карточка использует Javacript команды вместо традиционной ссылки:Открыть Vcard Использование Selenium

http://www.allenmatkins.com/Professionals/Ahern-William/Biography.aspx

<a id="ctl00_phContent_content_0_hlVcard" href="javascript:__doPostBack('ctl00$phContent$content_0$hlVcard','')">Vcard</a> 

**(from http://www.allenmatkins.com/Professionals/Ahern-William/Biography.aspx) 

B/C из JavaScript, я решил использовать Селен, чтобы открыть ссылку:

driver = webdriver.Firefox() 
element = driver.find_element_by_link_text("Vcard") 
element.click() 

Когда я запустите указанный выше код, я получаю всплывающее окно (из Outlook), которое спрашивает меня, где я хотел бы сохранить текст.

Я пытаюсь найти способ открыть ссылку в виде простого текста. Есть ли способ сделать это?

ответ

1

Большой вопрос. Как вы можете это сделать, вы можете загрузить vcard в папку вашего проекта. Затем проанализируйте файл vcf. Нашел отличный API, который может это сделать. Вот ссылка на то же самое ReadingVcard. Я выложу несколько примеров кода для анализа через vcard. Если вы загрузите файл и откройте его в блокноте, вы получите всю информацию из vcard. мы можем получить всю информацию с помощью api. Дайте мне знать, если вам потребуются дополнительные разъяснения.

public static void main(String[] args) throws FileNotFoundException, IOException 
    { 
     File file = new File("William-R.-Ahern.vcf"); 
     VCard vcard = Ezvcard.parse(file).first(); 
     System.out.println(vcard.getFormattedName().getValue()); 
     System.out.println(vcard.getEmails().get(0).getValue()); 
     System.out.println(vcard.getTitles().get(0).getValue()); 
     System.out.println(vcard.getTelephoneNumbers().get(0).getText()); 
     System.out.println(vcard.getTelephoneNumbers().get(1).getText()); 
     System.out.println(vcard.getAddresses().get(0).getStreetAddress()); 
     System.out.println(vcard.getAddresses().get(0).getLocality()); 
     System.out.println(vcard.getAddresses().get(0).getRegion()); 
     System.out.println(vcard.getAddresses().get(0).getPostalCode()); 
     System.out.println(vcard.getAddresses().get(0).getCountry()); 

    } 
+0

Эй, Vinay, спасибо за быстрый ответ. Моя проблема заключается не столько в анализе vcard, сколько в самом процессе получения vcard. B/c всплывающего окна, я не могу получить текст. Есть ли способ обойти всплывающее окно и просто получить текст (желательно используя driver.page_source) в Selenium? –

+1

Что вы хотите у браузера? Если это firefox, вы можете переопределить настройки с помощью java-кода таким образом, чтобы файл автоматически загружался в указанное место без всплывания. – Vinay

+0

Yup, используя Firefox. Есть ли способ сделать это с Python вместо Java? –

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