首页 > 其他分享 >selenium-some code

selenium-some code

时间:2023-05-31 11:33:50浏览次数:41  
标签:some code log selenium self driver element id find

 

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

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()

 

标签:some,code,log,selenium,self,driver,element,id,find
From: https://www.cnblogs.com/luobomao/p/17445616.html

相关文章

  • leetcode
    1python常用函数1.1排序函数原地排序nums.sort()不改变原列表有返回值new=sorted(nums)importfunctools#一维数组排序nums=[2,1,3,4,5]defcompare_udf(x,y):#x-y升序#y-x降序returnx-y##python2nums.sort(cmp=compar......
  • Codeforces Round #548 (Div. 2) 题解
    题目链接http://codeforces.com/contest/1139 A.EvenSubstrings判断个位是否是奇数即可。#include<iostream>#include<set>#include<array>#include<vector>usingnamespacestd;typedeflonglongll;constintmx=1e5+10;lldp[mx][2];charstr[......
  • CodeForces 1250E [2-sat]
    题目链接:https://codeforces.com/contest/1250/problem/E 解题思路:首先根据反转的性质有:    有字符串a,b,a的反转A,b的反转B,如果a和b匹配值为K,那么A和B的值也为K    同样a和B匹配值为M,那么A和b的匹配值也为M,因此有对称性那么就可以转换成2-sat问题了,设点i的对立......
  • Codeforces Round #594 (Div. 2) 题解
    题目链接:https://codeforces.com/contest/1248 A-IntegerPoints水题#include<bits/stdc++.h>usingnamespacestd;constintmx=1e5+5;typedeflonglongll;inta[mx],b[mx];intmain(){ intt; scanf("%d",&t); while(t--){ intn,m; scan......
  • CodeForcese 1256F [思维]
    题目链接:https://codeforces.com/problemset/problem/1256/F 解题思路:任意的翻转都可以认为是翻转若干个长度为2的,交换两个数主要奇数次翻转。两个串可以翻转成一样,那么一定可以再花费一样的翻转次数变成有序的字符串,连续两个相等的字符翻转任意数次是一样的,所以只要有两个字符......
  • Codeforces Round #599 (Div. 2) 题解
    题目链接:https://codeforces.com/contest/1243 A-MaximumSquare水题不说了#include<bits/stdc++.h>usingnamespacestd;constintmx=1e5+50;typedeflonglongll;intn;inta[mx];intmain(){ intt; scanf("%d",&t); while(t--){ scan......
  • Codeforces #564 (Div. 2) C. Nauuo and Cards[贪心]
    题目链接:http://codeforces.com/contest/1173/problem/C 解题思路:很明显总的抽卡次数是不会超过2*n的。然后我们再将情况分成两种:1.编号1的卡片已经在里面了,并且最底部已经形成了一个1~x的连续的卡片,而且之后x+1,x+2都可以来得及补上,在这种情况下抽卡次数肯定就不会超过n了。2.......
  • Codeforces #564 (Div. 2) D. Nauuo and Circle[树形DP]
    题目链接:http://codeforces.com/contest/1173/problem/D 解题思路:首先得知道按照圆周顺序的话,那么一颗子树必须存放在连续的一段区间里面,现在我们假设根节点是1,那么一颗为u做根节点的子树他的方案数就是各个儿子的方案数的乘积最后再乘以儿子个数+1(u节点本身)的排列方案数。所......
  • jquery.qrcode.js 和 jQuery.print.js 简单使用
    最近因为需要在前端生成二维码并打印二维码及相关内容,使用了jquery,jquery.qrcode.js,jQuery.print.js来实现代码<!DOCTYPEhtml><html><scriptsrc="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script><scriptsrc="https://c......
  • AtCoder Beginner Contest 258 Ex Odd Steps
    洛谷传送门AtCoder传送门不错的矩阵快速幂优化dp练习题。考虑一个朴素dp,\(f_i\)为组成和为\(i\)且用到的数都是奇数的方案数。有转移:\[f_i=\begin{cases}\sum\limits_{j=0}^{i-1}[i\bmod2\nej\bmod2]f_j&i\notinA\\0&i\inA\end{cases}\]考虑前......