selenium webdriver 模拟CSDN发表博客
2017-06-16 10:07
330 查看
刚学了selenium,心血来潮,想练练手,所以模拟CSDN发表一篇博客。这里遇到了很多的问题,比如元素定位不到啊,窗口的跳转的处理啊,还有各种坑。
总之,想要学好selenium,还真是要花一些心思,因为你会发现,大坑无处不在无处不有。
这段小程序,我模拟的是通过MarkDown编辑器发表的博客,如果大家不喜欢用MarkDown编辑器的话,可以使用默认的编辑器来发表,只需把定位元素那段修改一下即可。
如有疑问,欢迎评论。
总之,想要学好selenium,还真是要花一些心思,因为你会发现,大坑无处不在无处不有。
这段小程序,我模拟的是通过MarkDown编辑器发表的博客,如果大家不喜欢用MarkDown编辑器的话,可以使用默认的编辑器来发表,只需把定位元素那段修改一下即可。
#-*- coding:utf-8 -*- from selenium import webdriver import time import selenium from selenium.webdriver.common import alert from selenium.webdriver.common.keys import Keys from selenium.webdriver.common import action_chains # selenium.webdriver.remote.webdriver.switch_to_alert() #打开浏览器 driver = webdriver.Chrome() driver.get("https://passport.csdn.net/?service=http://write.blog.csdn.net/postedit") driver.implicitly_wait(5) driver.maximize_window() #登录操作 driver.find_element_by_id("username").send_keys("MTbaby") driver.find_element_by_id("password").send_keys("xxxx")#你的密码 driver.find_element_by_class_name("logging").click() time.sleep(3) #点击'切换到MarkDown编辑器'按钮 nowhandle=driver.current_window_handle driver.find_element_by_link_text("切换到MarkDown编辑器").click() #获取浏览器句柄,并切换到当前窗口 allhandles=driver.window_handles for handle in allhandles: if handle != nowhandle: driver.switch_to_window(handle) #对markdown编辑器使用说明的网页弹框处理 time.sleep(1) driver.find_element_by_xpath('//*[@id="step-0"]/nav/button[2]').click() time.sleep(2) '''输入博客标题,这里为什么要用ActionChains模块, 原因是,在定位元素的时候,会跳转到其他元素,导致定位元素不成功或者提示无效的元素, 所以这里使用ActionChains模块来移动元素至当前定位的元素。''' action = action_chains.ActionChains(driver) bt = driver.find_element_by_xpath('//*[@id="csdnEditor"]/div[1]/div[1]/div[1]/div/ul[6]/li[1]/a') action.move_to_element(bt) time.sleep(1) action.click() action.send_keys(Keys.CONTROL,'a','x') action.send_keys(u"自动写博客示例") action.perform() time.sleep(1) '''输入博客内容,这里使用xpath来定位时,提示元素失效,但是通过classname定位却能成功, 与标题的定位不同,但是不知道两者元素的区别,这里要再去一探究竟。''' driver.find_element_by_class_name('editor-content').clear() time.sleep(1) driver.find_element_by_class_name('editor-content').send_keys(u"大家好,这是我模拟自动发表博客的练习,请大家多多指教!") time.sleep(2) #保存后点击'发表博客'进行发表 driver.find_element_by_xpath('//*[@id="csdnEditor"]/div[1]/div[1]/div[1]/div/ul[3]/li/a[2]').click()#点击保存按钮 time.sleep(1) driver.find_element_by_link_text('发表博客').click() time.sleep(1) #输入标签,我这里输入五个标签,你随意啊 driver.find_element_by_xpath('//*[@id="tags-con-blog"]/input').send_keys("python" + Keys.ENTER) time.sleep(1) driver.find_element_by_xpath('//*[@id="tags-con-blog"]/input').send_keys("webdriver" + Keys.ENTER) time.sleep(1) driver.find_element_by_xpath('//*[@id="tags-con-blog"]/input').send_keys(u"自动化" + Keys.ENTER) time.sleep(1) driver.find_element_by_xpath('//*[@id="tags-con-blog"]/input').send_keys(u"自动化测试" + Keys.ENTER) time.sleep(1) driver.find_element_by_xpath('//*[@id="tags-con-blog"]/input').send_keys("selenium" + Keys.ENTER) time.sleep(1) driver.find_element_by_id("csdn-tags-blog-button").click()#点击下一步 time.sleep(1) #选择文章类型 m = driver.find_element_by_id("input-blog-type") m.find_element_by_xpath('//*[@id="input-blog-type"]/option[2]').click()#选择文章类型 time.sleep(1) #选择个人类型,我的个人分类选择selenium,你的自己选择 driver.find_element_by_xpath('//*[@id="tags-con-categories"]/input').send_keys("selenium" + Keys.ENTER) time.sleep(1) #选择文章分类 n = driver.find_element_by_id("input-blog-channel") n.find_element_by_xpath('//*[@id="input-blog-channel"]/option[11]').click()#选择文章分类 time.sleep(1) #发布后查看博客 driver.find_element_by_id("csdn-post-blog-button").click() time.sleep(1) driver.find_element_by_link_text("查看博客").click()
如有疑问,欢迎评论。
相关文章推荐
- selenium webdriver 模拟鼠标悬浮
- Selenium_WebDriver登录模拟鼠标移动切换窗口等操作练习(cssSelector初练手)_Java
- Selenium-Webdriver(python) (五) --- 电脑模拟手机访问手机版网页
- selenium webdriver模拟鼠标键盘操作
- selenium webdriver(4)---模拟鼠标键盘操作
- Selenium_WebDriver登录模拟鼠标移动切换窗体等操作练习(cssSelector初练手)_Java
- python + selenium webdriver 通过python来模拟鼠标、键盘操作,来解决SWFFileUpload调用系统底层弹出框无法定位问题
- selenium webdriver学习(十三)------------如何利用Actions类模拟鼠标和键盘的操作
- 转:WebDriver(Selenium2)模拟鼠标经过事件
- selenium webdriver 模拟键盘操作
- selenium webdriver 模拟登录阿里妈妈平台 Nodejs
- selenium webdriver模拟鼠标键盘操作
- selenium webdriver 模拟鼠标键盘的操作
- Selenium-Webdriver技术博客
- selenium webdriver学习(十三)------------如何利用Actions类模拟鼠标和键盘的操作
- selenium webdriver学习(十三)------------如何利用Actions类模拟鼠标和键盘的操作
- Selenium WebDriver如何模拟复制和粘贴
- 标题为:csdn开通博客三天内不允许发表文章——如果你照做了你就傻逼了!
- Selenium & WebDriver
- 加入CSDN博客,发表IT技术文章