簡體   English   中英

使用相同的 Selenium webdriver 在網站上執行多項操作?

[英]Using same Selenium webdriver for multiple actions on website?

我正在嘗試創建一個 GUI 來修改網站上的 Javascript 文件。 它用於創建 Leaflet 標記,而無需接觸代碼。

所以我對設置的想法是,我首先將 Webdriver 和 go 啟動到第一個 function 中的相應 JavaScript 文件。

def start():
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    browser = webdriver.Chrome(executable_path="chromedriver")
    browser.get(---> move to the javascript file on the website)
    return browser 

然后我想要幾個可以作用於文本區域的其他函數,比如添加行、刪除行等。問題是在其他函數中,我還必須從 function 開始使用“瀏覽器”變量:

def CreateMarker():
    from selenium.webdriver.common.keys import Keys
    code = code.get()
    textarea = browser.find_element_by_class_name('textarea')
    textarea.send_keys(sending some keys)
    safe, yadada etc....

在 GUI(使用 tkinter 制作)中,我有一個按鈕綁定到開始 function 到 go 網站和文件以及另一個按鈕來添加標記代碼。

所以問題是,createmarker function 無法識別瀏覽器變量,當我將 CreateMarker function 中的變量作為 CreateMarker(browser) 傳遞時,它會抱怨“瀏覽器”未定義,只要我想運行 GUI。 .

好的,所以我終於讓一切都按照我想要的方式工作了。 破解位只是使 webdriver 成為全局變量,並在主 function 中以正確的方式調用它。

所以現在我在主 GUI 上有兩個按鈕,如下所示:

# Button to start the webdriver
Button(window, text = "Start", width=11, command=init.actions.start).grid(row=1, column=1, sticky=W)

# Textbox for what to write
Label (window, text='Enter text', bg="black", fg="white") .grid(row=2, column=0, sticky=W)
text = Entry(window, width=20, bg="white")
text.grid(row=3, column =0, sticky=W)

我有一個單獨的文件,其中存儲了連接到按鈕的所有功能。 啟動 webdriver 並將文本寫入 textarea 的函數如下所示:

class actions:
    def start(): 
        from selenium import webdriver
        from selenium.webdriver.common.keys import Keys
        import time
        global browser 
        browser = webdriver.Chrome(executable_path="chromedriver")
        browser.get("go to the login page")
        login = browser.find_element_by_name("USER_LOGIN")
        login.send_keys("USERNAME HERE")
        pw= browser.find_element_by_name("USER_PASSWORD")
        pw.send_keys("PASSWORD HERE")
        pw.send_keys(Keys.ENTER)
        time.sleep(5)
        browser.get("page with the file")
        return browser

    def create_code(browser, text):
        from selenium.webdriver.common.keys import Keys
        Text=text.get()
        textarea.send_keys(Text)

所以現在我有一個按鈕來初始化 webdriver 和一個單獨的按鈕來寫入文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM