selenium-some code

发布时间 2023-05-31 11:29:11作者: 萝卜猫

 

======================================

from selenium import webdriver


driver = webdriver.Chrome()

driver.get("http://selenium.dev")

#driver.quit()

 

from selenium import webdriver

option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)
driver = webdriver.Chrome(chrome_options=option)
driver.get('https://www.baidu.com')
driver.maximize_window()

 

from selenium import webdriver
from time import sleep


driver = webdriver.Firefox(executable_path='C:\Program Files\Mozilla Firefox\geckodriver.exe')
driver.get("https://www.baidu.com")
driver.find_element_by_id("kw").send_keys("selenium3")
driver.find_element_by_id("su").click()
sleep(3)
driver.quit()

 

#coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import *
#打开浏览器/客户端
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://10.10.40.49/")
sleep(3)
#登录
driver.find_element_by_id("real_username").send_keys("admin")
sleep(2)
driver.find_element_by_id("fake_pass").click()
driver.find_element_by_id("real_pass").send_keys("admin888")
sleep(2)
driver.find_element_by_id("submit").click()
#入网域
sleep(2)
driver.find_element_by_id("menu_lv_1_sub_5").click()
sleep(2)
driver.find_element_by_xpath("//a[@class='device-btn-save']").click()
sleep(1)
driver.find_element_by_id("dmu_domain_nameEdit").send_keys("domain")
sleep(1)
lists = driver.find_elements_by_xpath("//div[@class='l-dialog-btn-inner']")
lists[1].click()
#入网接入模块
sleep(2)
driver.find_element_by_id("menu_lv_1_sub_3").click()
sleep(2)
driver.find_element_by_id("createDauBtn").click()
sleep(1)
driver.find_element_by_id("dauNameEdit").send_keys("dau")
sleep(1)
driver.find_element_by_id("dauIpEdit").send_keys("10.10.40.49")
sleep(1)
driver.find_element_by_id("dmu_dau_smnp_cap").click()
sleep(1)
lists = driver.find_elements_by_xpath("//div[@class='l-dialog-btn-inner']")
lists[1].click()

 

 

# coding=UTF-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
import time
import traceback
class Praise():
    def __init__(self,QQ,password,friendQQ):
        self.QQ=QQ
        self.password=password
        self.friendQQ=friendQQ
        if self.friendQQ:
            self.url="https://user.qzone.qq.com/"+self.friendQQ+"/main"
        else:
            self.url="https://user.qzone.qq.com/"+self.QQ

    def login_qzone(self):
        # self.browser = webdriver.Chrome()
        #self.browser=webdriver.Edge()
        self.browser=webdriver.Firefox()
        self.browser.get(self.url)
        self.browser.switch_to.frame("login_frame")
        self.browser.find_element_by_id("switcher_plogin").click()
        self.browser.find_element_by_id("u").clear()
        self.browser.find_element_by_id("u").send_keys(self.QQ)
        self.browser.find_element_by_id("p").clear()
        self.browser.find_element_by_id("p").send_keys(self.password)
        self.browser.find_element_by_id("login_button").click()
        time.sleep(10)
        print "登录成功"
        #解决FireFox的can't access dead object的方法链接:
        #http://stackoverflow.com/questions/16396767/firefox-bug-with-selenium-cant-access-dead-object
        #通过下面这句解决,可能时因为上面switch_to到了login_frame,所以现在它是dead object
        self.browser.switch_to.default_content()

    def praise_someone(self):
        self.log_num=0
        pre_num=0
        log_set=set()
        # while 1:
        for i in range(1000):
            self.browser.execute_script("window.scrollBy(0,500);")
        self.browser.switch_to.frame("QM_Feeds_Iframe")  # 个人主页才有
        self.log_head = self.browser.find_element_by_id("host_home_feeds")
        time.sleep(60)
        self.log_list=self.log_head.find_elements_by_css_selector(".f-single.f-s-s")
        for log in self.log_list:
            log_set.add(log)
        # if pre_num==len(log_set):
        #     break
        pre_num+=len(log_set)
        print "已从"+str(self.friendQQ)+"的空间中找到"+str(pre_num)+"条说说"
        self.start_praising()

    def praise_all(self):
        feed_friend_list = self.browser.find_element_by_id("feed_friend_list")
        self.log_list = feed_friend_list.find_elements_by_css_selector(".f-single.f-s-s")
        # 向下翻动一段距离,为了使feed_page_container那个变化的列表出现
        for i in range(100):
            self.browser.execute_script("window.scrollBy(0,500);")
        time.sleep(60)
        self.start_praising()

        self.log_num = len(self.log_list)
        self.log_list=[]
        container_head = feed_friend_list.find_element_by_class_name("feed_page_container")
        # 个人中心页面,说说是在<li class="feed_page_container">...</li>下动态出现的
        # 该标签下最多有3个<ul data-page="0">...</ul>,每个ul标签下又包含4个说说
        i=0
        while 1:
            if i % 12 == 0:
                time.sleep(2)
                self.log_list= container_head.find_elements_by_css_selector(".f-single.f-s-s")
                self.start_praising()
            self.browser.execute_script("window.scrollBy(0,500)")
            i+=1


    def run(self):
        print '当前位置:', self.url
        print 'Current URL:', self.browser.current_url

        # 向下翻页
        # 有的空间“查看更多...”必须要点一下?...
        try:
            btn_more = self.browser.find_element_by_css_selector(".b-inline.data_btn_more")
            if btn_more:
                btn_more.click()
        except:
            pass

        if self.friendQQ:
            self.praise_someone()
        else:
            self.praise_all()


    def start_praising(self):
        self.praised_list=[]
        n=0
        for log in self.log_list:
            if log in self.praised_list:
                continue
            try:
                n+=1
                print n,":",log.find_element_by_xpath("./div[2]/div/div").text,
                thumb_up_block=log.find_element_by_xpath("./div[3]/div[1]/p/a[3]")
                if "item-on" not in thumb_up_block.get_attribute("class"):
                    thumb_up_icon=thumb_up_block.find_element_by_xpath("./i")
                    thumb_up_icon.click()
                    print "[点赞成功]\n"
                else:
                    print "[已赞]\n"
                self.praised_list.append(log)
                time.sleep(1)
            except:
                traceback.print_exc()
                continue

def main():
    QQ =raw_input(u"输入QQ号:")
    password =raw_input(u"输入QQ密码:")
    friendQQ =raw_input(u"输入被点赞的好友QQ号(不输入则给空间所有发出来的动态点赞):")
    praise_spider = Praise(QQ,password,friendQQ)
    praise_spider.login_qzone()
    praise_spider.run()
    print "总共处理" + str(praise_spider.log_num) + "条动态"
    # praise_spider.start_praising()

if __name__ == "__main__":
    main()