Python 如何设置Selenium节点的浏览器属性?
我想操纵Selenium节点的浏览器属性。我在Kubernetes(Minikube)集群的Selenium网格中使用docker映像作为节点(但可能我也希望在Firefox节点上这样做) 我想要操纵的属性是Python 如何设置Selenium节点的浏览器属性?,python,selenium,selenium-webdriver,selenium-chromedriver,selenium-grid,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,Selenium Grid,我想操纵Selenium节点的浏览器属性。我在Kubernetes(Minikube)集群的Selenium网格中使用docker映像作为节点(但可能我也希望在Firefox节点上这样做) 我想要操纵的属性是 navigator.webdriver screen.width screen.height navigator.deviceMemory 但我正在寻找一种适用于大多数浏览器属性的方法,以后可能会找到其他要更改的属性。浏览器属性在扫描过程中不必更改,它们也不需要在python代码中设置,
navigator.webdriver
screen.width
screen.height
navigator.deviceMemory
但我正在寻找一种适用于大多数浏览器属性的方法,以后可能会找到其他要更改的属性。浏览器属性在扫描过程中不必更改,它们也不需要在python代码中设置,我可以在节点配置、docker映像或其他地方更改它们
我编写了一个python脚本来读取这些属性的当前值
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
driver = webdriver.Remote(
command_executor='http://selenium-hub:4444/wd/hub',
desired_capabilities=getattr(DesiredCapabilities, "CHROME")
)
print("navigator.webdriver: "+str(driver.execute_script("return navigator.webdriver")))
print("screen.width: "+str(driver.execute_script("return screen.width")))
print("screen.height: "+str(driver.execute_script("return screen.height")))
print("navigator.deviceMemory: "+str(driver.execute_script("return navigator.deviceMemory")))
driver.quit()
如何更改这些属性
编辑:节点的K8s部署如下所示:
kind: Deployment
metadata:
name: selenium-node-chrome
labels:
app: selenium-node-chrome
spec:
replicas: 2
selector:
matchLabels:
app: selenium-node-chrome
template:
metadata:
labels:
app: selenium-node-chrome
spec:
containers:
- name: selenium-node-chrome
image: selenium/node-chrome
ports:
- containerPort: 5555
volumeMounts:
- name: dshm
mountPath: /dev/shm
- name: config
mountPath: /opt/selenium/config.json
subPath: config.json
env:
- name: HUB_HOST
value: "selenium-hub"
- name: HUB_PORT
value: "4444"
resources:
limits:
memory: "1000Mi"
cpu: ".5"
volumes:
- name: dshm
emptyDir:
medium: Memory
- name: config
configMap:
name: selenium-node-chrome
---
apiVersion: v1
kind: ConfigMap
metadata:
name: selenium-node-chrome
data:
config.json: |
{
"capabilities": [
{
"version": "81.0.4044.92",
"browserName": "chrome",
"maxInstances": 1,
"seleniumProtocol": "WebDriver",
"applicationName": ""
}
],
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 1,
"host": "0.0.0.0",
"port": 5555,
"register": true,
"registerCycle": 5000,
"nodePolling": 5000,
"unregisterIfStillDownAfter": 60000,
"downPollingLimit": 2,
"debug": false
}
您的意思是要使用python代码更改属性的值?可以在python文件中更改它们,但不必在那里进行更改,如果可以在K8s部署文件或节点配置文件中进行更改,对我来说也可以,也是。那么我们也需要从您的K8s配置文件中获取更多信息。我已经添加了configmap,但我不确定它是否有用……您的意思是您想使用python代码更改属性值?在python文件中更改属性值可以,但不必在那里更改,如果可以在K8s部署文件或节点配置文件中完成,这对我来说很好。然后我们也需要从您的K8s配置文件中获取其他信息。我已经添加了配置映射,但我不确定它是否有用。。。