王者荣耀python3 selenium使用

登正题:

七 进程的层次结构

  无论UNIX还是windows,进程就生一个父进程,不同之是:

  1.
每当UNIX中具有的长河,都是因init进程也根本,组成树形结构。父子进程同做一个历程组,这样,当打键盘发出一个信号时,该信号为送给当前跟键盘相关的长河组中的保有成员。

  2.
当windows中,没有经过层次之概念,所有的长河都是身份平等的,唯一类似于经过层次之授意,是在开创过程时,父进程获一个特别之令牌(名叫句柄),该词柄可以用来控制子进程,但是父进程有权将该词柄传为其它子进程,这样就算无层次了。

安卓手机下载一个按键精灵就可以于孤注一掷模式中装按键,让手机自行玩闯关,一铺面19个金币,一夜就一个见义勇为矣。不过

相同 什么是经过

    进程:正在进展的一个历程还是说一个职责。而负责实施任务虽然是cpu。

    举例(单核+多道,实现多个经过的面世执行):

   
egon在一个时刻段内发出好多职责要开:python备课的职责,写书之天职,交女朋友的天职,王者荣耀上分的任务,  

   
但egon同一时刻只能开一个职责(cpu同一时间只能够干一个生),如何才会玩来多独任务并发执行之力量?

   
egon备一会晤课,再错过同李杰的女性对象聊聊天,再失去打一会面王者荣耀….这就管了每个任务还在开展中.

脚是有些selenium模块的骨干用法

第二 进程与程序的区别

次第仅仅只是一堆代码而已,而经过指的是次的运作过程。

举例:

想像一员产生手段好厨艺的计算机科学家egon正在为外的女儿元昊烘制生日蛋糕。

他有做生日蛋糕的菜系,

厨房里装有用的原料:面粉、鸡蛋、韭菜,蒜泥等。

于这比喻中:

    做蛋糕的食谱就是先后(即用适量形式描述的算法)

    计算机科学家就电脑(cpu)

    而举行蛋糕的各种原料就是是输入数据

 
 进程就是炊事员阅读食谱、取来各种原料和烘制蛋糕等一律层层动作之总和

 

现行设计算机科学家egon的儿子alex哭着走了进来,说:XXXXXXXXXXXXXX。

科学家egon想了想,处理儿子alex蛰伤的天职比较吃闺女元昊举行蛋糕的任务再度着重,于是

计算机科学家就记录下客论在食谱做到哪里了(保存进程的时状态),然后将出同样比照急救手册,按照内部的指令处理蛰伤。这里,我们视处理机从一个进程(做蛋糕)切换到任何一个赛优先级的过程(实施治疗急救),每个过程有各自的次(食谱和抢救手册)。当蜜蜂蛰伤处理完后,这号处理器科学家又回来做蛋糕,从外
离时之那么无异步累举行下来。

要强调的凡:同一个程序执行两不行,那吧是片只经过,比如打开暴风影音,虽然还是和一个软件,但是一个可以播放苍井空,一个得以播放饭岛好。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

八 进程的状态

  tail -f access.log |grep ‘404’

  执行程序tail,开启一个子过程,执行顺序grep,开启另外一个子经过,两个经过中因管道’|’通讯,将tail的结果作为grep的输入。

  进程grep在等待输入(即I/O)时的状态称为阻塞,此时grep命令还无法运行

  其实当有限种情况下会招致一个进程在逻辑上无可知运作,

  1.
经过挂于凡自己原因,遇到I/O阻塞,便要被来CPU让任何进程去实施,这样保证CPU一直以做事

  2.
和经过无关,是操作系统层面,可能会见因一个经过占用时间过多,或者优先级等因,而调用其他的进程去用CPU。

  因而一个过程由三栽状态

王者荣耀 1

于写之前要下载selenium模块

四 同步\异步and阻塞\非阻塞(重点)

同步:

王者荣耀 2

#所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。按照这个定义,其实绝大多数函数都是同步调用。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。
#举例:
#1. multiprocessing.Pool下的apply #发起同步调用后,就在原地等着任务结束,根本不考虑任务是在计算还是在io阻塞,总之就是一股脑地等任务结束
#2. concurrent.futures.ProcessPoolExecutor().submit(func,).result()
#3. concurrent.futures.ThreadPoolExecutor().submit(func,).result()

王者荣耀 3

异步:

王者荣耀 4

#异步的概念和同步相对。当一个异步功能调用发出后,调用者不能立刻得到结果。当该异步功能完成后,通过状态、通知或回调来通知调用者。如果异步功能用状态来通知,那么调用者就需要每隔一定时间检查一次,效率就很低(有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一 种很严重的错误)。如果是使用通知的方式,效率则很高,因为异步功能几乎不需要做额外的操作。至于回调函数,其实和通知没太多区别。
#举例:
#1. multiprocessing.Pool().apply_async() #发起异步调用后,并不会等待任务结束才返回,相反,会立即获取一个临时结果(并不是最终的结果,可能是封装好的一个对象)。
#2. concurrent.futures.ProcessPoolExecutor(3).submit(func,)
#3. concurrent.futures.ThreadPoolExecutor(3).submit(func,)

王者荣耀 5

阻塞:

王者荣耀 6

#阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)。函数只有在得到结果之后才会将阻塞的线程激活。有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。
#举例:
#1. 同步调用:apply一个累计1亿次的任务,该调用会一直等待,直到任务返回结果为止,但并未阻塞住(即便是被抢走cpu的执行权限,那也是处于就绪态);
#2. 阻塞调用:当socket工作在阻塞模式的时候,如果没有数据的情况下调用recv函数,则当前线程就会被挂起,直到有数据为止。

王者荣耀 7

非阻塞:

#非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前也会立刻返回,同时该函数不会阻塞当前线程。

小结:

#1. 同步与异步针对的是函数/任务的调用方式:同步就是当一个进程发起一个函数(任务)调用的时候,一直等到函数(任务)完成,而进程继续处于激活状态。而异步情况下是当一个进程发起一个函数(任务)调用的时候,不会等函数返回,而是继续往下执行当,函数返回的时候通过状态、通知、事件等方式通知进程任务完成。

#2. 阻塞与非阻塞针对的是进程或线程:阻塞是当请求不能满足的时候就将进程挂起,而非阻塞则不会阻塞当前进程

 

老三 并作和互为

不管并行还是出现,在用户看来都是’同时’运行的,不管是过程或线程,都仅仅是一个任务而已,真是干活的是cpu,cpu来做这些职责,而一个cpu同一时刻只能实行一个职责

      一
并作:是伪并行,即看起是以运转。单个cpu+多鸣技术就是得兑现产出,(并行也属于并发)

王者荣耀 8

你是一个cpu,你同时谈了三个女朋友,每一个都可以是一个恋爱任务,你被这三个任务共享
要玩出并发恋爱的效果,
应该是你先跟女友1去看电影,看了一会说:不好,我要拉肚子,然后跑去跟第二个女友吃饭,吃了一会说:那啥,我
去趟洗手间,然后跑去跟女友3开了个房

王者荣耀 9

某天下午,egon,yuanhao,wupeiqi,alex约好了一起去嫖娼,但娼只有一个,cpu只有一个,但是却要‘同时’干
四个任务(嫖出并发的效果),那就必须是干一会egon,再干一会yuanhao,再干一会wupeiqi,再干一会alex
egon:花了200块钱,因为人美活好
yuanhao:500块钱
wupeiqi:100块钱,可能是不太行
alex:没要钱,为啥???因为大家刚刚嫖的是他女朋友

     二 并行:同时运行,只有所有多独cpu才能够落实互动

       
 单核下,可以以基本上鸣技术,多只对,每个核也还好下基本上道技术(基本上鸣技术是针对单核而言的

       
 有四独审批,六个任务,这样同一时间有四个任务让实施,假要分别于分配受了cpu1,cpu2,cpu3,cpu4,

       
 一旦任务1相见I/O就被迫中止执行,此时任务5虽将到cpu1底光阴片去履行,这就算是特核下的多道技术

       
 而如果任务1的I/O结束了,操作系统会更调用它(需知进程的调度、分配为何人cpu运行,由操作系统说了算),可能受分配受四单cpu中之人身自由一个失去执行

  王者荣耀 10

具备现代计算机经常会面在同一时间做过多码事,一个用户的PC(无论是单cpu还是多cpu),都得以运行多个任务(一个职责可以清楚啊一个进程)。

    启动一个经过来杀毒(360软件)

    启动一个过程来拘禁电影(暴风影音)

    启动一个进程来聊聊(腾讯QQ)

具有的这些过程都得于管制,于是一个支持多进程的多道程序系统是必不可缺的

大抵鸣技术概念回顾:内存中同时存入多道(多只)程序,cpu于一个经过快速切换到另外一个,使每个过程各自运行几十还是几百毫秒,这样,虽然在某个一个一眨眼,一个cpu只能执行一个职责,但每当1秒内,cpu却可运作多个经过,这便叫人产生了相的错觉,即伪并发,以之来分别多处理器操作系统的审硬件并行(多个cpu共享同一个物理内存)

实在这就是相当给法人之点击事件来连续的造访浏览器。如果你玩过王荣耀的话语在2016年一月份底本里就发出一个bug。

六 进程的息(了解)

  1.
常规退出(自愿,如用户点击交互式页面的叉号,或程序执行完毕调用发起系统调用正常退出,在linux中用exit,在windows中用ExitProcess)

  2. 差退出(自愿,python a.py中a.py不在)

  3.
严重错误(非自愿,执行非法命令,如援不设有的内存,1/0等,可以捕捉异常,try…except…)

  4. 深受别进程杀死(非自愿,如kill -9)

brguge=webdriver.Chrome()#声明驱动对象
try:
    brguge.get('https://www.baidu.com')#发送get请求
    input=brguge.find_element_by_id('kw')#找到目标

    input.send_keys('python')#输入python关键字
    input.send_keys(Keys.ENTER)#敲入回车
    wait=WebDriverWait(brguge,10)#等待元素加载出来
    wait.until(EC.presence_of_element_located(By.ID,'content_left'))#加载
    print(brguge.current_url)#输出搜索的路径
    print(brguge.get_cookie())#输出cookie
    print(brguge.page_source)#输出结果源代码
finally:
    brguge.close()#关闭谷歌浏览器

五 进程的创建(了解)

  但凡是硬件,都得来操作系统去管理,只要发生操作系统,就发生过程的定义,就待发创造进程的法门,一些操作系统只为一个应用程序设计,比如微波炉中之控制器,一旦启动微波炉,所有的历程都曾在。

  而对此通用系统(跑多应用程序),需要有系统运转过程被创造或者吊销进程的力量,主要分为4遭到形式创建新的长河

  1.
网初始化(查看进程linux中因故ps命令,windows中之所以任务管理器,前台进程负责与用户交互,后台运行的进程与用户无关,运行于后台并且仅以得常才提醒的历程,称为守护进程,如电子邮件、web页面、新闻、打印)

  2.
一个历程在运转过程被开了分支进程(如nginx开启多进程,os.fork,subprocess.Popen等)

  3. 用户之交互式请求,而创办一个新进程(如用户双击暴风影音)

  4. 一个批判处理作业的初始化(只以大型机的批处理系统被使用)

  

  无论哪一样种,新历程的创建都是由于一个既存在的过程执行了一个用来创造过程的体系调用而创立的:

  1.
在UNIX中该系统调用是:fork,fork会创建一个同父亲进程同模型一样的副本,二者有一致之贮存映像、同样的环境字符串和千篇一律的开拓文件(在shell解释器进程遭到,执行一个限令就见面创造一个子过程)

  2.
以windows中该系统调用是:CreateProcess,CreateProcess既处理过程的创立,也肩负将对的次装入新历程。

 

  关于创建的子进程,UNIX和windows

  1.均等的凡:进程创造后,父进程和子进程产生个别不同的地址空间(大抵鸣技术要求物理层面实现进程中内存的隔断),任何一个历程的以该地点空间被的改动都非会见潜移默化及另外一个进程。

  2.不一的是:在UNIX中,子进程的开始地址空间是老爹进程的一个副本,提示:子进程和父进程是可以有才念之共享内存区之。但是对windows系统来说,从同开始大进程与子进程的地点空间就不同之。

查找元素
    单个元素   (from selenium import webdriver)
        brguge.find_element_by_id('q')用这个元素找id是q的元素
        brguge.find_element_by_css_selector('#q')找css样式是q的
        brguge.find_element_by_xpath('//*[ @id="q"]')三个效果一样
        brguge.find_element_by_name()通过name来查找
        brguge.find_element_by_link_text()通过link来查找
        brguge.find_element_by_partial_link_text()
        brguge.find_element_by_tag_name()
        brguge.find_element_by_class_name()通过class查找

        from selenium import webdriver
        from selenium.webdriver.common.by import By
        brguge.find_element(By.ID,'Q')通用查找方式
    多个元素(find_elements)加了个s
        他会以列表的形式打印出来
        brguge.find_elements_by_css_selector('.service-bd li')css样式为li的元素
        brguge.find_elements(By.css_selector,'.service-bd li')两个作用一样
        (利用索引就可以获取单个或多个元素了)

    元素交互操作(获取元素然后再给他指令)
        选择输入框 --》send_keys('输入文字')--》clear()清空输入框--在输入别的--》找到搜索--》click(点击)
        input.clear()清空按钮
    交互动作(将动作附加到动作链中串行执行)
        switch_to_frame('iframeResult')
        用css样式分别找到两个要交互
        调用ActionChains(调用谷歌的)
        drag_and_drop(source,target)第一个到第二个上面
        perform()

九 进程并发的兑现(了解)

  进程并发的实现在,硬件中断一个方运行的长河,把这经过运行的装有状态保存下来,为夫,操作系统维护一摆表,即进程表(process
table),每个过程占用一个进程表项(这些表项也称进程控制块)

王者荣耀 11

  该表存放了经过状态的要消息:程序计数器、堆栈指针、内存分配状况、所有打开文件的状态、帐号以及调度信息,以及其它以经过由运行态转为就绪态或不通态时,必须保留之音,从而确保该过程在再次启航时,就如无为搁浅过一样。

程序员也不是素食的。给一个礼拜设置了大概4000金币上限。有趣味之得错过试。(注:手机要root)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website