一、 下载对应浏览器的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)
|