考虑以下文件:
{
"capabilities": [
{
"browserName": "chrome",
"chrome_binary": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
}
],
"hubHost": "172.1.1.1",
"hubPort": 4444,
"port": 10,
"host": "172.11.0.1",
"custom": {
"nodeVersion": "3.12.0"
},
"hub": "http://172.11.1.1:4444"
}
java -Dwebdriver.chrome.driver="C:\selenium\chromedriver.exe" -jar C:\selenium\Node.Selenium.jar -nodeConfig C:\path\node.json
start.bat
时,我的期望是节点将注册到相关的集线器,但它不会注册到集线器。
json 内容中的 hub 值按如下所示方式更改,并使用 unicode 转义序列:
"hub": "http://\u003c/powershell\u003e:4444"
使用PowerShell将
node.json
的字符编码转换为utf8:
$jsonString = $jsonContent | ConvertTo-Json -Depth 100 -Compress
Set-Content -Path $jsonFilePath -Value $jsonString -Encoding UTF8
start.bat
不起作用删除
node.json
并使用 ASCII 字符编码重新创建它。
start.bat
不起作用
我该如何解决这个问题,有没有人有类似的问题并且可以解决?
再解释一下,我使用terraform运行一个实例,并在实例用户数据中运行一个sh,在这个用户数据中,下载了一个zipi文档到特定目录,有jar包json文件等必要文件,java安装文件,然后分别安装后,我更新json内容中的hub地址如下,最后运行start.bat文件。
当我手动执行这些步骤时,当我运行一个空实例并将手动文件放入其内容并手动更新 json 时,节点会毫无问题地注册到相关集线器。 同样,我在powershell中手动尝试了用户数据中的powetshell命令,一切顺利,json更新成功,但是当start.bat在最后阶段运行时,集线器地址“http://\u003c/powershell\ u003e:4444”就这样被破坏了。
try {
$privateIP = (Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -like '172.11.*' }).IPAddress
Log-Message "Retrieved private IP: $privateIP"
$jsonFilePath = "C:\path\node.json"
$jsonContent = Get-Content -Path $jsonFilePath -Raw | ConvertFrom-Json
$jsonContent.host = $privateIP
$jsonContent.hubHost = "172.11.1.1"
$jsonContent.hub = "172.11.1.1:4444"
$jsonString = $jsonContent | ConvertTo-Json -Depth 100 -Compress
Set-Content -Path $jsonFilePath -Value $jsonString
Log-Message "Updated nodecalisan.json with private IP"
} catch {
Log-Message "Failed to retrieve or update nodecalisan.json: $_"}