一、 下载对应浏览器的webdriver

如chrome对应的下载地址: https://chromedriver.chromium.org/downloads

二、 本地起一个debug端口

如windows的cmd中的命令为:

C:\abs_path\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\selenum\AutomationProfile"

这会打开一个浏览器窗口(新标签页)

三、 在上面打开的浏览器窗口中可以先人工做相关的登录操作,从而避免认证(如需要登录)的问题。

这个窗口就是selenium接管的页面,selenium之后的操作都会在该页面。

四、 页面元素定位方法:

  • XPATH,单个的XPATH可以通过【审查元素】后copy xpath拿到。
driver.find_element(By.XPATH, "//span[contains(text(),'匹配字段')]/parent::*/parent::div/div[4]/h4[1]/a")

driver.find_element_by_xpath('/html/body/spinnaker/div/div[2]/div/react-ui-view-adapter/div/div[2]/ui-view/div/div/div[2]/div/pipeline-configurer/div/div[2]/pipeline-config-view/div/div/pipeline-config-stage/div/div/div[3]/button[2]')

driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div/div/div[3]/button[2]')
  • find_element_by_partial_link_text,如
driver.find_element_by_partial_link_text("产品负责人确认")

五、 部分代码如下(coding.net旧版部署控制台为例):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import sys


def coding_action(url):
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222","ALL")
    chrome_driver = r"C:\Users\thinkpad\Downloads\chromedriver_win32\chromedriver.exe"
    driver = webdriver.Chrome(chrome_driver, options=chrome_options)
    # driver.maximize_window()
    driver.get(url)
    time.sleep(2)
    test1 = driver.find_element_by_partial_link_text("产品负责人确认")
    print(test1)
    if test1.text == '产品负责人确认':
        test1.click()
        print(test1.text)
        time.sleep(2)
        json_text = driver.find_element_by_xpath('/html/body/spinnaker/div/div[2]/div/react-ui-view-adapter/div/div[2]/ui-view/div/div/div[2]/div/pipeline-configurer/div/div[2]/pipeline-config-view/div/div/pipeline-config-stage/div/div/div[3]/button[2]')
        if json_text.text == '编辑 JSON 配置':
            print('编辑 JSON 配置')
            json_text.click()
            save_button = driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div/div/div[3]/button[2]')
            if save_button.text == '保存变更':
                print(save_button.text)

            else:
                print("未找到保存变更button")
                sys.exit(100)
        else:
            print("未找到编辑JSON配置按钮")
            sys.exit(100)
    else:
        print('未找到产品负责人阶段')
        sys.exit(100)