我们正在从selenium 3网格移动到selenium 4网格(具有中心和节点设置)。我们需要能够获取正在执行当前会话的节点的IP地址(会话id是从driver.getSessionId()获取的)
对于selenium3网格,我们从<hub url>/grid/api/testsession?session=<sessionId>获得了这些信息
我找不到硒4网格的等效端点。我可以找到图形查询参数,但它获取所有会话的详细信息。我只需要找到一个会话id的会话详细信息。
有什么帮助吗?
发布于 2022-05-08 10:00:58
注意事项:基于这个问题是如何表述的,我假设我们讨论的是节点URI,它并不总是精确的IP地址。如果确实需要的话,拥有URI应该不难找到真正的ip。考虑到这一点..。
GraphQL端点是去的地方。您可以通过查询特定的sessionID来缩小结果范围(正如您所指出的,您可以从webdriver获得该结果)。
cUrl示例:
curl -X POST -H "Content-Type: application/json" --data '{"query":"{ session (id: \"<session-id>\") { id, capabilities, startTime, uri, nodeId, nodeUri, sessionDurationMillis, slot { id, stereotype, lastStarted } } } "}' -s <LINK_TO_GRAPHQL_ENDPOINT>在node.js中的原型:
const { Builder } = require('selenium-webdriver');
const axios = require('axios').default;
async function main() {
let driver = await new Builder()
.usingServer('http://localhost:4444')
.forBrowser('chrome')
.build();
try {
await driver.get('https://www.cogitovirus.com/');
const title = await driver.getTitle();
console.log(`Sanity check. Title is: ${title}`);
const sessionId = (await driver.getSession()).getId()
console.log(`Session id: ${sessionId}`)
const res = await axios.post('http://localhost:4444/graphql', {
query: `{ session (id: \"${sessionId}\") { id, uri, nodeId, nodeUri} }`
});
console.log(res.data)
} catch (err) {
console.log(err)
} finally {
await driver.quit()
}
}
main()打印出来:
Sanity check. Title is: cogitovirus.com
Session id: ce19fd89269af93327655537a1b65330
{
data: {
session: {
id: 'ce19fd89269af93327655537a1b65330',
uri: 'http://172.18.0.3:5555',
nodeId: 'ea5414e7-ac40-4744-aea5-8ff6faeeb8e2',
nodeUri: 'http://172.18.0.3:5555'
}
}
}使用硒栅码头的快速设置进行测试
网格GraphQL 文档
https://stackoverflow.com/questions/72031032
复制相似问题