selenium操控WordPress自动发布文章 自动化测试

selenium操控WordPress自动发布文章 自动化测试

selenim可以操控web页面,就以WordPress网站来说吧,可以实现WordPress自动发布文章,那么们来实现一下试试吧。那么先分析一下,按照下面的图片,我们需要输入标题,接着是内容,然后就可以发布文章了,但是这样还不如自己用手解决,我们需要添加到固定的分类中,添加标签,添加关键字,这里我使用的是Yast SEO插件,可以设置关键字,添加元描述,元描述的话发现它不是一个可输入的框,是一个div,也就是不能使用send_keys来输入内容,所以这个先暂且不管。

#selenium实现WordPress自动发布文章
import time,redis
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
def wordpress_selenium(title,content,key_value):
    #设置首选项
    #option =webdriver.ChromeOptions()
    #option.add_argument('headless')   #添加之后不会看到浏览器的界面

    #driver=webdriver.Chrome(chrome_options=option)
    driver=webdriver.Chrome()
    timeout=30
    #driver.maximize_window() #最大窗口

    #模拟登录  添加cookie,格式为name: 等号左边 , value:等号右边
    cookie_wordpress=[{'name': '', 'value': ''},
                      {'name': '', 'value': ''},
                      {'name': '', 'value': ''},
                      {'name': '', 'value': ''},
                      {'name': '', 'value': ''},
                      {'name': '', 'value': ''},
                      {'name': '', 'value': ''}]
    driver.get('https://www.e1yu.com/wp-admin/index.php')  #登录后台首页
    for cookie in cookie_wordpress:
        driver.add_cookie(cookie)  #添加cookies
    driver.get('https://www.e1yu.com/wp-admin/post-new.php') #打开发布文章的页面
    #找到标题框,写标题
    write_title=WebDriverWait(driver,timeout).until(lambda a:a.find_element_by_xpath('//*[@id="title"]'))
    write_title.click()
    write_title.send_keys(title)
    #找到正文框,写正文
    write_content=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="content"]'))
    write_content.click()
    write_content.send_keys(content)

    #设置关键字
    write_key_value = WebDriverWait(driver, timeout).until(lambda b: b.find_element_by_xpath('//*[@id="focus-keyword-input-metabox"]'))
    write_key_value.click()
    write_key_value.send_keys(key_value)


    # #选择分类目录
    driver.execute_script("window.scrollBy(0,200)") #向下滚动一点
    for i in range(10):  #分类目录也是需要滚动的
        browser=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="category-all"]'))
        ActionChains(driver).drag_and_drop_by_offset(browser, 0, 10).perform() #相当于拖动鼠标移动,滚动滑块
    write_nav=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="in-category-317"]'))#找到分类目录
    write_nav.click()

    #添加标签
    write_content = WebDriverWait(driver, timeout).until(lambda b: b.find_element_by_xpath('//*[@id="new-tag-post_tag"]'))
    write_content.click() #找到标签框
    time.sleep(1)
    write_content.send_keys('这是一个标签')#输入内容
    write_tag=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="post_tag"]/div/div[2]/input[2]'))
    write_tag.click()#找到添加按钮,点击添加

    #滚动到顶部发布
    driver.execute_script('document.documentElement.scrollTop=0')   #滚动到顶部
    submin=WebDriverWait(driver,timeout).until(lambda b:b.find_element_by_xpath('//*[@id="publish"]')) #找到发布按钮
    submin.click()
if __name__=='__main__':
    title='WordPress世界你好'
    content='这是WordPress第一篇文章'
    key_value='这是一个关键字'
    wordpress_selenium(title,content,key_value)

操作的时候要设置等待,不然元素没加载出来找不到就会报错,title和content,还有关键字都可以替换。这里可以这样玩,先抓取适量的文章,存到数据库中,然后读取,就这样可以实现自动发布文章,速度受网速和电脑配制的影响,还取决于你网站服务器的性能,那么自己玩玩吧。

分享到 :

发表评论

登录... 后才能评论