背景
某家公司的弱智同事要求我在git上自动提交MR,现在问题是本地分支推送到库上创建一个新的分支之后,会进入到一个中间界面,在这里可以选择目标分支,选择某个智障同事为你审核,这些都确认无误之后(比如:自己的分支确实要提交到master上,这个同事也确实是个智障),点击“Create Merge Request”就可成功提交,这篇博客就是为了实现登录Gitlab和点击按键这一系列操作
【注】本文基于Windows操作,Linux系统的我去问过这位技(sha)术(bi)大(tong)牛(shi),她说太简单了网上随便搜一搜就有,没必要专门请教她
直接上代码
from selenium import webdriver
from selenium.webdriver.common.by import By
def auto_click():
options = webdriver.ChromeOptions()
options.binary_location = r'C:\Users\Ying.Yang\AppData\Local\Chromium\Application\Chromium.exe'
browser = webdriver.Chrome(chrome_options=options)
browser.get('http://code.YangYingisSB.com/nn-compiler/tensorturbo/-/merge_requests/new?merge_request%5Bsource_branch%5D=auto_click')
# browser.get('http://code.YangYingisSB.com/users/sign_in')
time.sleep(2)
username = browser.find_element(By.ID, 'username')
username.send_keys('Ying.Yang')
password = browser.find_element(By.ID, 'password')
password.send_keys('YangYingisSB')
time.sleep(1)
sign_in = browser.find_element(By.NAME, 'commit')
sign_in.click()
button = browser.find_element(By.NAME, 'commit')
button.click()
1、import模块
第一个import webdriver就是浏览器的驱动,一般都选用谷歌浏览器,最好自己下一个,网址我贴在这了
1)在浏览器中输入 chrome://version 查看浏览器版本
2)在谷歌驱动下载仓找到对应版本的驱动下载一个,放到你本地谷歌浏览器安装位置的同路径下(追更的时候我发现得装在Python路径下面,都可以试试)
第二个 import By 就是下面会用到的一种检索方法,因为这个方法有更新,以前是直接browser.find_element_by_id就可以,反正按照最新的来就行了
【2023/09/06追更】
时隔一年我又准备试一下这个操作(好在我已经离职了,远离了YangYingisSB这个git仓),结果代码调试的时候发现了这个错误“selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for chrome using Selenium Manager”,现在已经成功解决了,说一下解决办法
- 找一下你的Python在哪里,简单点可以直接打开Pycharm的Terminal,输入where python,就能找到你这个工程正在使用的Python出自哪里,like this↓
- 把chromedriver.exe塞到上面这个路径下,like this↓
- 然后打开环境变量的配置(Windows现在什么都能直接搜索了,方便快捷),然后把这个chromedriver.exe的路径加进去,like these↓
然后直接输入下面这一段代码就能直接访问百度了,现在教程的迭代都得与时俱进啊
from selenium import webdriver
def whatever()
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
driver.quit()
2、options.binary_location
这里填写你本地谷歌浏览器的安装路径就行,注意要到Chrome.exe这一层
3、browser.get
就是你需要访问的浏览器地址填上就行了,可以是gitlab也可以是某购物网站,或者你想登录的任何网站,这里以YangYingisSB这个git仓为例
4、browser.find_element
这里按一下F12,或者在你想要的图标上“右键-检查”就能看到
在右边的代码块里找你想要的元素就行了,用name,id什么的作为索引都可以,保证唯一性即可
5、button.click()
最后就是按钮的点击了,其实就是先定义按钮变量,也就是你在页面上索引到的某个元素,然后调用click这个方法点一下就行了
总结
实现的代码段多写总结,远离这种智障同事,干什么都叫你自己上网查