我正在嘗試通過 python、selenium 執行 JS 檔案,但我想我錯過了一些東西。
我試圖checking從 Safari 控制臺呼叫變數,但它顯示以下錯誤Can't find the checking variable.
我也嘗試執行以下代碼行driver.execute_script('var checking=0;'),但是當我嘗試checking從 Safari 控制臺呼叫變數時得到了相同的結果。
蟒蛇代碼
driver.execute_script(open("/Users/Paul/Downloads/pythonProject/Social media/javascripts/Initializing Variables.js").read())
JS檔案
var checking;
function Checking(item) {
if (item) {
checking = true;
}
else {
checking = false;
}
}
有任何想法嗎?
uj5u.com熱心網友回復:
所有變數都將僅在單個execute_script命令背景關系中可用。因此,不可能在一個驅動程式命令中定義變數并修改它或通過另一個命令獲取,除非您將資料放入檔案、本地存盤或會話存盤..
但是您可以宣告并將某些內容放入變數中,只是不要忘記在腳本中回傳它的值。
如果我執行這個腳本 driver.execute_script
var a;
function setAValue(arg) {
a = arg;
}
setAValue(100);
return a;
你會在輸出結果中得到 100。
如果你想從腳本運行你的檔案,檔案應該以函式呼叫和回傳陳述句結束。
在腳本之間共享函式和變數
這是 groovy 語言的作業示例(抱歉沒有 python env)
WebDriverManager.chromedriver().setup()
WebDriver driver = new ChromeDriver()
driver.get("https://stackoverflow.com/")
//define variable date and function GetTheDatesOfPosts
driver.executeScript('''
document.date = [];
document.GetTheDatesOfPosts = function (item) { document.date = [item];}
''')
//use them in new script
println (driver.executeScript('''
document.GetTheDatesOfPosts(7);
return document.date;
'''))
driver.quit()
它列印[7]。
uj5u.com熱心網友回復:
這是關于區域變數和全域變數的快速教程。
如果您運行以下命令:
self.execute_script("var xyz = 'abc';")
然后去控制臺嘗試查找xyz,它不會在那里(xyz is not defined)。
但是,如果您運行:
self.execute_script("document.xyz = 'abc';")
如果您鍵入,它將在瀏覽器控制臺中document.xyz。
這就是簡短的總結。如果您只是嘗試在 from 運行時宣告一個區域變數execute_script,那么它會在腳本運行后超出范圍。但是,如果您將一個變數附加到一個持久變數,這是保持該變數(并且仍然可以訪問)的一種方式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/420027.html
標籤:
上一篇:棄用警告:不推薦使用find_elements_by_*命令。請使用find_elements()而不是在GoogleColab中使用Selenium
下一篇:如何使用Selenium和Python在iframe中使用contenteditable="true"在輸入欄位中發送文本
