มีวิธีรับ url จากแท็บปัจจุบันใน google-chrome หรือไม่?


13

ฉันเคยทำเช่นนั้นกับ firefox โดยใช้คำสั่ง python แต่เมื่อเร็ว ๆ นี้มีบางสิ่งเปลี่ยนแปลงและฉันไม่สามารถรับ URL ได้อีก

  • สิ่งที่เคยทำงานกับ firefox:

    #!/bin/bash
    current_tab_num () {
        python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nprint str(jdata["windows"][0]["selected"])'
    }
    current_tab_url () {
        sed -n "$(current_tab_num)p" <(python2 <<< $'import json\nf = open("/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js", "r")\njdata = json.loads(f.read())\nf.close()\nfor win in jdata.get("windows"):\n\tfor tab in win.get("tabs"):\n\t\ti = tab.get("index") - 1\n\t\tprint tab.get("entries")[i].get("url")')
    }
    current_tab_url
    

ทุกคนสามารถบอกวิธีการทำเช่นนี้ใน firefox และ / หรือ chrome ได้หรือไม่?

หมายเหตุ : ฉันไม่เข้าใจหลามฉันเพิ่งพบคำสั่งเหล่านั้นที่ไหนสักแห่งและใช้พวกเขาในการทุบตี!


บางอย่างเช่นซีลีเนียมจะเหมาะกว่าสำหรับสิ่งนี้
cristi

คำตอบ:


6

ฉันมีปัญหาเดียวกันและผ่านที่นั่นในขณะที่พยายามแก้ไขมันดังนั้นฉันจะโพสต์โซลูชันของฉัน (ซึ่งแย่มาก) ที่นี่

ฉันใช้ wmctrl (คุณสามารถใช้ xprop แทน) และ xdotool เพื่อทำสิ่งนี้ ก่อนหน้านี้ฉันใช้ส่วนขยายเพื่อทำให้ URL ปรากฏในแถบชื่อเรื่อง (จากนั้นคุณสามารถเข้าถึง url ผ่าน xprop หรือ wmctrl) ทั้งสองวิธีใช้งานได้ดีแม้ว่ามันจะไม่ "สะอาด" จริงๆ

id=$(wmctrl -l | grep -oP "(?<=)(0x\w+)(?=.*Chromium)") //Put here the regex for the browser you use
xdotool key --window $id "ctrl+l"
xdotool key --window $id "ctrl+c"

ตอนนี้คุณมี URL ในคลิปบอร์ดแล้ว ฉันใช้ xclip เพื่อทำงานกับ URL

ฉันชอบที่จะเห็นทางออกที่แท้จริงหากมีใครพบมัน


3

คุณสามารถบอกข้อผิดพลาดที่คุณได้รับหลังจากการดำเนินการเพราะสคริปต์ใช้งานได้สำหรับฉัน มีคำถามเดียวกันที่นี่ตอบการใช้phpและperl:

URL เอาต์พุตของแท็บ firefox แบบเปิดในเทอร์มินัล

เนื่องจากส่วนหลักของ python นี่เป็นสคริปต์ python ล้วนๆเพื่อทำสิ่งเดียวกันลองดู:

    #!/usr/bin/python
    import json
    f = open("recovery.js","r")
    jdata = json.loads(f.read())
    f.close()

    number_of_selected_tab = jdata["windows"][0]["selected"]

    tab_number = 1
    for win in jdata.get("windows"):
        for tab in win.get("tabs"):
            if number_of_selected_tab == tab_number :
                tab_index = tab.get("index") - 1
                print tab.get("entries")[tab_index].get("url")
            tab_number = tab_number + 1

ฉันแทนที่ไฟล์ที่มี/home/username/.mozilla/firefox/xxxxx.default/sessionstore.js recovery.jsในกรณีของฉัน (Mozilla Firefox 44.0, openSUSE 13.1) ~/.mozilla/firefox/*.default/sessionstore-backups/recovery.jsไฟล์เป็น และสุดท้าย แต่ไม่ใช่อย่างน้อยสคริปต์จะไม่ทำงานหากคุณมีสองอินสแตนซ์ในการFirefoxทำงาน


ไฟล์เทียบเท่าสำหรับ Chrome คืออะไร
gaurav parashar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.