Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何设置Selenium节点的浏览器属性?_Python_Selenium_Selenium Webdriver_Selenium Chromedriver_Selenium Grid - Fatal编程技术网

Python 如何设置Selenium节点的浏览器属性?

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代码中设置,

我想操纵Selenium节点的浏览器属性。我在Kubernetes(Minikube)集群的Selenium网格中使用docker映像作为节点(但可能我也希望在Firefox节点上这样做)

我想要操纵的属性是

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配置文件中获取其他信息。我已经添加了配置映射,但我不确定它是否有用。。。