2010-04-18 14 views
9

पर पाइथन का उपयोग करके ब्राउज़र को नियंत्रित करना, मैं पाइथन का उपयोग कर मैक (यानी फ़ायरफ़ॉक्स या सफारी या क्रोम/-ियम या ओपेरा, लेकिन IE नहीं) पर ब्राउज़र को प्रोग्रामेटिक रूप से नियंत्रित करने का एक तरीका ढूंढ रहा हूं।मैक

मुझे आवश्यक कार्यों में निम्नलिखित लिंक शामिल हैं, यह जांचना कि किसी पृष्ठ में मौजूद तत्व मौजूद हैं या फ़ॉर्म सबमिट कर रहे हैं।

आप किस समाधान की सिफारिश करेंगे?

+1

आप समझा सकता है कारण है कि आप उन कार्यों के लिए एक वेब ब्राउज़र को नियंत्रित करने की जरूरत है ? – dzen

उत्तर

0

PyShell (PyXPCOM का विस्तार) पर एक नज़र डालें।

उदाहरण:

promptSvc = components.classes["@mozilla.org/embedcomp/prompt-service;1"].\ 
     getService(Components.interfaces.nsIPromptService) 
promptSvc.alert(None, 'Greeting...', "Hello from Python") 

Python PyShell 0.1, Mozilla, popup, OK

2

mechanize आज़माएं, यदि आप वास्तव में ब्राउज़र की आवश्यकता नहीं है।

उदाहरण:

import re 
import mechanize 

br = mechanize.Browser() 
br.open("http://www.example.com/") 
# follow second link with element text matching regular expression 
response1 = br.follow_link(text_regex=r"cheese\s*shop", nr=1) 
assert br.viewing_html() 
print br.title() 
print response1.geturl() 
print response1.info() # headers 
print response1.read() # body 

br.select_form(name="order") 
# Browser passes through unknown attributes (including methods) 
# to the selected HTMLForm. 
br["cheeses"] = ["mozzarella", "caerphilly"] # (the method here is __setitem__) 
# Submit current form. Browser calls .close() on the current response on 
# navigation, so this closes response1 
response2 = br.submit() 
+3

मैंने विशेष रूप से कुछ अच्छे कारणों से ब्राउज़र को नियंत्रित करने के लिए कहा .. उदा। जिस साइट को मैं स्वचालित कर रहा हूं वह AJAX भारी और afaik mechanize है और जैसे सबसे बुनियादी डोम-मैनिपुलेटिंग जावास्क्रिप्ट को चलाने से बहुत दूर है। –

4

चेक बाहर python-browsercontrol

इसके अलावा, आप इस मंच पेज पढ़ सकता है (मुझे पता है, यह पुरानी है, लेकिन यह अपने प्रश्न का अत्यंत प्रासंगिक लगती है): http://bytes.com/topic/python/answers/45528-python-client-side-browser-script-language

इसके अलावा: http://docs.python.org/library/webbrowser.html

उदाहरण:

from browser import * 
my_browser = Firefox(99, '/usr/lib/firefox/firefox-bin') my_browser.open_url('cnn.com') 

open_url वापस लौटाता है जब cnn.com होम पेज दस्तावेज़ ब्राउज़र फ्रेम में लोड होता है।

1

कई मैक अनुप्रयोगों OSAScript (यानी AppleScript में), osascript आदेश के माध्यम से भेजा जा सकता है जो के माध्यम से नियंत्रित किया जा सकता। O'Reilly में article on invoking osascript from Python है। मैं वही कर रहा हूं जो आप चाहते हैं, लेकिन यह एक शुरुआती बिंदु है।

2

थोड़ा सा प्रतिबंधक हो सकता है, लेकिन py-appscript पायथन से एक एप्पलस्क्रिप्ट ब्राउज़र को नियंत्रित करने का सबसे आसान तरीका हो सकता है।

अधिक जटिल चीजों के लिए, आप कुछ भी हासिल करने के लिए पीओओबीजेसी का उपयोग कर सकते हैं - उदाहरण के लिए, webkit2png एक पायथन स्क्रिप्ट है जो एक पृष्ठ लोड करने के लिए वेबकिट का उपयोग करती है, और इसकी एक छवि को सहेजती है। इसका उपयोग करने के लिए आपको उद्देश्य-सी और कोको/आदि की अच्छी समझ होनी चाहिए (क्योंकि यह केवल ओब्जेक ऑब्जेक्ट्स को पायथन पर उजागर करता है)

Screen-scaping आपको बहुत कम जटिलता के साथ प्राप्त हो सकता है।

7

मुझे Selenium पसंद है, यह Python के माध्यम से स्क्रिप्ट योग्य है। सेलेनियम आईडीई केवल फ़ायरफ़ॉक्स में चलता है, लेकिन सेलेनियम आरसी कई ब्राउज़रों का समर्थन करता है।

+1

[सेलेनियम-आरसी] (http://seleniumhq.org/docs/05_selenium_rc.html) में सफारी और ओएस एक्स पर कई अन्य ब्राउज़रों के लिए समर्थन है, उनके [वेब साइट] के अनुसार (http://seleniumhq.org /about/platforms.html#programming-languages)। – fiirhok

2

बाहर चेक spynner पायथन मॉड्यूल।

स्पिनर पायथन के लिए एक राज्यव्यापी प्रोग्रामेटिक वेब ब्राउज़र मॉड्यूल है। यह पीईक्यूटी और वेबकिट पर आधारित है। यह जावास्क्रिप्ट, AJAX, और हर दूसरी तकनीक का समर्थन करता है!वेबकिट (फ्लैश, एसवीजी, ...) को संभालने में सक्षम है। स्पिनर JQuery का लाभ लेता है। एक शक्तिशाली जावास्क्रिप्ट लाइब्रेरी जो पृष्ठों और घटना सिमुलेशन के साथ बातचीत को वास्तव में आसान बनाता है।

स्पिनर का उपयोग करके आप बिना किसी जीयूआई के वेब ब्राउज़र को अनुकरण करने में सक्षम होंगे (हालांकि एक ब्राउज़िंग विंडो डीबगिंग उद्देश्यों के लिए खोला जा सकता है), इसलिए इसका उपयोग क्रॉलर्स या स्वीकृति परीक्षण टूल को लागू करने के लिए किया जा सकता है।

some examples at GitHub page देखें।

0

चेकआउट Mozmill https://github.com/mikeal/mozmill

Mozmill फ़ायरफ़ॉक्स और थंडरबर्ड जैसे मोज़िला ऐप्स के लिए यूआई स्वचालन ढांचा है। यह एक एडन और पायथन कमांड लाइन उपकरण दोनों है। एडन जावास्क्रिप्ट परीक्षण लिखने और चलाने के लिए एक आईडीई प्रदान करता है और पायथन पैकेज कमांड लाइन से परीक्षण चलाने के साथ-साथ एप्लिकेशन को पुनरारंभ करने का परीक्षण करने के लिए एक तरीका प्रदान करता है।

1

शायद अधिक शक्तिशाली, लेकिन Marionette को फ़ायरफ़ॉक्स को नियंत्रित करने के लिए जांचें। वहाँ एक tutorial at readthedocs है:

आप पहली बार शुरू एक Marionette-enabled firefox instance:

client = Marionette('localhost', port=2828) 
client.start_session() 

नेविगेशन f.ex.:

firefox -marionette 

तो फिर तुम एक ग्राहक बनाने के माध्यम से किया जाता है

url = 'http://mozilla.org' 
client.navigate(url) 
client.go_back() 
client.go_forward() 
assert client.get_url() == url 
0

आप अजगर के लिए selenium पुस्तकालय का उपयोग कर सकते हैं, यहाँ एक सरल उदाहरण (unittest के रूप में) है:

#!/usr/bin/env python3 
import unittest 
from selenium import webdriver 

class FooTest(unittest.TestCase): 
    def setUp(self): 
     self.driver = webdriver.Firefox() 
     self.base_url = "http://example.com" 

    def is_text_present(self, text): 
     return str(text) in self.driver.page_source 

    def test_example(self): 
     self.driver.get(self.base_url + "/") 
     self.assertTrue(self.is_text_present("Example")) 

if __name__ == '__main__': 

    suite = unittest.TestLoader().loadTestsFromTestCase(FooTest) 
    result = unittest.TextTestRunner(verbosity=2).run(suite)