精华内容
下载资源
问答
  • print(driver.page_source) 异常如下: selenium.common.exceptions.WebDriverException: Message: unknown error: failed to wait for extension background page to load: chrome-extension://...

    代码如下:

    from selenium import webdriver

    import string

    import zipfile

    proxyHost = "http-dyn.abuyun.com"

    proxyPort = "9020"

    proxyUsername = "H5IM8T3H288W241D"

    proxyPassword = "5C4448B395A6FF16"

    def create_proxy_auth_extension(proxy_host, proxy_port,

    proxy_username, proxy_password,

    scheme='http', plugin_path=None):

    if plugin_path is None:

    plugin_path = r'./{}_{}@http-dyn.abuyun.com_9020.zip'.format(proxy_username, proxy_password)

    manifest_json = """

    {

    "version": "1.0.0",

    "manifest_version": 2,

    "name": "Abuyun Proxy",

    "permissions": [

    "proxy",

    "tabs",

    "unlimitedStorage",

    "storage",

    "",

    "webRequest",

    "webRequestBlocking"

    ],

    "background": {

    "scripts": ["background.js"]

    },

    "minimum_chrome_version":"22.0.0"

    }

    """

    background_js = string.Template(

    """

    var config = {

    mode: "fixed_servers",

    rules: {

    singleProxy: {

    scheme: "${scheme}",

    host: "${host}",

    port: parseInt(${port})

    },

    bypassList: ["foobar.com"]

    }

    };

    chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

    function callbackFn(details) {

    return {

    authCredentials: {

    username: "${username}",

    password: "${password}"

    }

    };

    }

    chrome.webRequest.onAuthRequired.addListener(

    callbackFn,

    {urls: [""]},

    ['blocking']

    );

    """

    ).substitute(

    host=proxy_host,

    port=proxy_port,

    username=proxy_username,

    password=proxy_password,

    scheme=scheme,

    )

    with zipfile.ZipFile(plugin_path, 'w') as zp:

    zp.writestr("manifest.json", manifest_json)

    zp.writestr("background.js", background_js)

    return plugin_path

    def init_driver():

    proxy_auth_plugin_path = create_proxy_auth_extension(proxy_host=proxyHost, proxy_port=proxyPort,

    proxy_username=proxyUsername, proxy_password=proxyPassword,

    scheme='http', plugin_path=None)

    options = webdriver.ChromeOptions()

    options.add_argument('--disable-dev-shm-usage')

    options.add_argument('--no-sandbox')

    options.add_argument('--disable-gpu')

    options.add_argument('--hide-scrollbars')

    options.add_argument('--headless')

    options.add_argument("--test-type")

    options.add_argument("--no-first-run")

    options.add_argument("--ignore-certificate-errors")

    options.add_argument("--no-default-browser-check")

    options.add_extension(proxy_auth_plugin_path)

    return webdriver.Chrome(options=options)

    if name == '__main__':

    driver = init_driver()

    url = 'http://www.baidu.com'

    driver.get(url)

    print(driver.page_source)

    异常如下:

    selenium.common.exceptions.WebDriverException: Message: unknown error: failed to wait for extension background page to load: chrome-extension://kidcehangkjhnmdccclekheeighbkegc/_generated_background_page.html

    from unknown error: page could not be found: chrome-extension://kidcehangkjhnmdccclekheeighbkegc/_generated_background_page.html

    (Driver info: chromedriver=2.41.578706 (5f725d1b4f0a4acbf5259df887244095596231db),platform=Mac OS X 10.11.6 x86_64)

    展开全文
  • 在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。.../bin/bashfor ((i=0;i<5;i++));do{sleep 3;echo1>>aa&& echo "done!"}donewaitcat...

    在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就有多少“进程”在同时执行。我们就先实现第一种情况:

    实例一:正常情况脚本

    #!/bin/bash

    for ((i=0;i<5;i++));do

    {

    sleep 3;echo

    1>>aa

    && echo "done!"

    }

    done

    wait

    cat aa|wc -l

    rm aa

    这种情况下,程序顺序执行,每个循环3s,共需15s左右。

    $ time bash test.sh

    done!

    done!

    done!

    done!

    done!

    5

    real  0m15.030s

    user  0m0.002s

    sys  0m0.003s

    实例二:“多进程”实现

    #!/bin/bash

    for ((i=0;i<5;i++));do

    {

    sleep 3;echo

    1>>aa

    && echo "done!"

    } &

    done

    wait

    cat aa|wc -l

    rm aa

    这个实例实际上就在上面基础上多加了一个后台执行&符号,此时应该是5个循环任务并发执行,最后需要3s左右时间。

    $ time bash test.sh

    done!

    done!

    done!

    done!

    done!

    5

    real  0m3.011s

    user  0m0.002s

    sys  0m0.004s

    效果非常明显。

    这里需要说明一下wait的左右。wait是等待前面的后台任务全部完成才往下执行,否则程序本身是不会等待的,这样对后面依赖前面任务结果的命令来说就可能出错。例如上面wc

    -l的命令就报错:不存在aa这个文件。

    wait命令的官方解释如下:

    wait [n]

    Wait for the specified process and return its

    termination status.  n may be a process ID or

    a  job

    specification; if a job spec is given, all

    processes in that job's pipeline are waited for. If n is not given, all currently active

    child processes are waited for, and the return status is

    zero.  If  n

    specifies  a

    non-existent process  or job,

    the return status is 127.  Otherwise, the

    return status is the exit status of the last processor job waited

    for.

    以上所讲的实例都是进程数目不可控制的情况,下面描述如何准确控制并发的进程数目。

    #!/bin/bash

    # 2006-7-12, by wwy

    #-----------------------------------------------------------------------------------

    # 此例子说明了一种用wait、read命令模拟多线程的一种技巧

    # 此技巧往往用于多主机检查,比如ssh登录、ping等等这种单进程比较慢而不耗费cpu的情况

    # 还说明了多线程的控制

    #-----------------------------------------------------------------------------------

    function a_sub { # 此处定义一个函数,作为一个线程(子进程)

    sleep 3 # 线程的作用是sleep 3s

    }

    tmp_fifofile="/tmp/$$.fifo"

    mkfifo $tmp_fifofile  # 新建一个fifo类型的文件

    exec 6<>$tmp_fifofile

    #

    将fd6指向fifo类型

    rm $tmp_fifofile

    thread=15 # 此处定义线程数

    for

    ((i=0;i

    echo

    done >&6 #

    事实上就是在fd6中放置了$thread个回车符

    for ((i=0;i<50;i++));do #

    50次循环,可以理解为50个主机,或其他

    read -u6

    # 一个read

    -u6命令执行一次,就从fd6中减去一个回车符,然后向下执行,

    #

    fd6中没有回车符的时候,就停在这了,从而实现了线程数量控制

    { # 此处子进程开始执行,被放到后台

    a_sub

    && { # 此处可以用来判断子进程的逻辑

    echo "a_sub is finished"

    } ||

    {

    echo "sub error"

    }

    echo >&6 #

    当进程结束以后,再向fd6中加上一个回车符,即补上了read -u6减去的那个

    } &

    done

    wait # 等待所有的后台子进程结束

    exec 6>&- # 关闭df6

    exit 0

    sleep 3s,线程数为15,一共循环50次,所以,此脚本一共的执行时间大约为12秒

    即:

    15x3=45, 所以 3 x 3s = 9s

    (50-45=5)<15, 所以 1 x 3s =

    3s

    所以 9s + 3s = 12s

    $ time ./multithread.sh >/dev/null

    real  0m12.025s

    user  0m0.020s

    sys  0m0.064s

    而当不使用多线程技巧的时候,执行时间为:50 x 3s = 150s。

    此程序中的命令mkfifo tmpfile和linux中的命令mknod tmpfile p

    效果相同。区别是mkfifo为POSIX标准,因此推荐使用它。该命令创建了一个先入先出的管道文件,并为其分配文件标志符6。管道文件是进程之间通信的一种方式,注意这一句很重要

    exec 6<>$tmp_fifofile

    #

    将fd6指向fifo类型

    如果没有这句,在向文件$tmp_fifofile或者&6写入数据时,程序会被阻塞,直到有read读出了管道文件中的数据为止。而执行了上面这一句后就可以在程序运行期间不断向fifo类型的文件写入数据而不会阻塞,并且数据会被保存下来以供read程序读出。

    wait是bash内嵌命令,见man bash,sleep不是bash的built-in命令。

    wait command stop script execution until all jobs running in

    background have terminated or until the job number or process id

    specified as an option terminates

    wait%1or

    wait $PID

    wait ${!}

    wait ${!} means "to wait till the last background process is

    completed" ($! being the PID of the last

    background process)

    Sleep

    add delay for a specified amount of time.

    sleep NUMBER[SUFFIX]sleep5(sleep five seconds)

    再如:

    #!/bin/bash

    log=/tmp/test.sh.log

    ./test.sh &

    pid=$!

    while :

    do

    wait $pid

    time=$(date)

    echo "$time process is down "

    >$log

    ./test.sh

    &

    pid=$!

    done

    这段代码是重复不断执行test.sh,等test完成之后输出时间。

    展开全文
  • Did you forget to wait for something async in your test?的错误,但是并不影响测试结果。(看着太难受,遂找了一下解决办法) 解决: import { mount } from '@vue/test-utils' //中的mount改为shallowMount =>...

    vue项目运行jest时报Cannot log after tests are done. Did you forget to wait for something async in your test?的错误,但是并不影响测试结果。(看着太难受,遂找了一下解决办法)

    解决:

    import { mount } from '@vue/test-utils' //中的mount改为shallowMount
    =>
    import { shallowMount } from '@vue/test-utils'
    //使用的时候
    const wrapper = shallowMount(uploadImageVue, {
        global: {
          plugins: [ElementPlus]
        }
      })
    
    展开全文
  • Thread is in the Blocked state while waiting for the monitor lock to enter a synchronized block or method or to reenter a synchronized block or method after calling Object.wait().这个地方是说...

    Thread is in the Blocked state while waiting for the monitor lock to enter a synchronized block or method or to reenter a synchronized block or method after calling Object.wait().

    这个地方是说synchronized会导致线程进入Blocked状态,Object.wait()导致线程进入Waiting状态,Waiting线程被其他线程调用Object.notify()唤醒之后,重新获取对象上的锁的时候也会进入Blocked状态

    * The current thread must own this object's monitor. The thread

    * releases ownership of this monitor and waits until another thread

    * notifies threads waiting on this object's monitor to wake up

    * either through a call to the {@codenotify} method or the

    * {@codenotifyAll} method. The thread then waits until it can

    * re-obtain ownership of the monitor and resumes execution.

    这是Object.wait()方法的注释,最后一句指明被唤醒的线程需要重新获取到对象的锁才能恢复执行

    * The awakened thread will not be able to proceed until the current

    * thread relinquishes the lock on this object. The awakened thread will

    * compete in the usual manner with any other threads that might be

    * actively competing to synchronize on this object; for example, the

    * awakened thread enjoys no reliable privilege or disadvantage in being

    * the next thread to lock this object.

    这是Object.notify()方法的注释,第一句也说被唤醒的线程需要获取对象的锁

    也就是说只有synchronized会导致线程进入Blocked状态,Waiting状态只能进入Blocked状态,获取锁之后才能恢复执行。

    展开全文
  • 起因在平时的的项目中,我们可能会用到对与数据进行悲观锁,比如select for update的语法,然后该语句默认会等待其他事务完成(提交...解决oracleoracle的语法中,支持直接在select for update语句后面跟上[nowait | ...
  • 这个返回一个process对象destroy,exitValue,waitFor有三个方法看官方文档waitForpublic abstract int waitFor()throws InterruptedExceptionCauses the current thread to wait, if necessary, unti...
  • 查看该文件夹,该文件夹下有三个文件,systemd-networkd-wait-online.service、networking.service、NetworkManager-wait-online.service。 我是修改了systemd-networkd-wait-online.service文件,在 [Service] 下...
  • 作者: 弦乐之花 | 可以转载, 但必须以超链接形式标明文章原始出处作者信息及版权声明mysql innodb之select for update nowait习惯了oracle数据库的select for update nowait的同学,如果转在mysql环境开发的话,...
  • wait方法是当前线程等待,释放锁,这是Object的方法。同时要注意,Java 14 之后引入的 inline class 是没有 wait 方法的 Sleep()原理 public static native void sleep(long millis) throws InterruptedException; ...
  • Hi,I have a Oracle Dataguard 10.2 running on Windows and found a WAIT_FOR_GAP error on the standby server.--> alert log of standbySun Jan 30 20:00:04 2011ALTER DATABASE RECOVER MANAGED STANDBY DATA...
  • 先说结论 应该达成jar包 使用java -jar 命令启动jar包 再进行命令 大部都是windows 下 在idea环境下直接运行项目 然后再使用cmd 运行JStack 命令 结果会报错 是因为环境版本不一致 一个32位的一个是64位的 ...
  • 1.概述在这篇简短的文章中,我们将看一下核心Java 中的标准sleep()和wait()方法,并了解它们之间的差异相似之处。2. wait和sleep之间的一般差异简单地说,wait()是一个用于线程同步的实例方法。它可以在任何对象上...
  • Yes, I know both are used to wait for some specified time.Selenium:driver.implicitly_wait(10)Python:import timetime.sleep(10)Is there any difference between these two?解决方案time.sleep(secs)time....
  • Java Process waitFor()方法

    2021-03-16 15:28:47
    Java Process waitFor()方法java.lang.Process.waitFor()方法导致当前线程等待,如果有必要,直到由该Process对象表示的进程已经终止。此方法返回,如果立刻子进程已经结束。如果子进程还没有终止,则调用线程将被...
  • 问题I have a button with twitter, and after click new window opens, but before opening there is a timout in few seconds, so is there a way to wait for it? I mait in a bad way for now...Ui.click_el...
  • 1、这两个方法来自不同的类分别是ThreadObject2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。3、wait,notifynotifyAll只能在同步控制方法或者同步控制块里面...
  • 且clock hwclock都不能使用,有以下报错:select() to /dev/rtc to wait for clock tick timed out。故障分析:计算机系统有两个时钟,一个是 BIOS(CMOS),或者说“硬件时钟”,还有一个就是“系统(操作系统)时钟”,...
  • Oracle Wait Events: Wait for scn ackwait for scn ack 是在RAC环境中可能常见的一个等待事件,意思是等待跨实例的SCN应答。Top 5 Timed Events Avg %Totalr~~~~~~~~~~~~~~~~~~ ...
  • 虚拟机Centos7.4在编译软件时候,更新了一些软件,第二天无法启动图形桌面,开机一直卡在“A start job is running for wait for Plymouth Boot Screen to Quit”,并且无法进入命令行模式; 解决方法如下: 第一...
  • phantomjs waitFor

    2020-12-18 07:24:34
    function waitFor(testFx, onReady, timeOutMillis) {var maxtimeOutMillis = timeOutMillis ? timeOutMillis : 120000, //< Default Max Timout is 3mstart = new Date().getTime(),condition = false,interval ...
  • 1.等待事件的服务WaitForEvent 启动服务中的WaitForEvent服务的函数原型: /**等待Event数组内任一事件被触发 @retval EFI_SUCCESS 下表为*index的事件被触发 @retval EFI_UNSUPPORTED 当前的TPL不是TPL_...
  • Java中wait和sleep的区别

    2021-02-12 11:22:26
    1.概述在这篇简短的文章中,我们将看一下核心Java 中的标准sleep()和wait()方法,并了解它们之间的差异相似之处。2. wait和sleep之间的一般差异简单地说,wait()是一个用于线程同步的实例方法。它可以在任何对象上...
  • 现象: 虚拟机安装ubuntu20.04 TLS系统后,开机总会卡在等待网络连接好长时间。 如图: 解决办法: ...查看该文件夹,该文件夹下有个文件,systemd-networkd-wait-online.service vi systemd-n...
  • 如果不能从根本上理解sleep() 和wait() 之间的区别,再好的解释也会只是当时记得,而后就忘记。本文刨根问题,从源码角度去理解这两个函数的区别。1. sleep() 的根本实现jvm sleep()---->jni sleep()-------->...
  • 我想使用Java 8中的Process.waitFor(long timeout, TimeUnit unit)方法,但是在Java 6中未实现。相反,我可以使用waitFor() ,它阻塞直到完成或出现错误。我想避免尽可能地将Java版本升级到8,因为这需要进行许多其...
  • 介绍condition_variable, waitwait_for 直接上代码如下: #include <iostream> // std::cout #include <thread> // std::thread #include <mutex> // std::...
  • ADG备库wait_for_log

    千次阅读 2021-11-28 11:11:22
    查看进程状态 归档目录确实没有406归档日志,而且观察发现实例1的归档都是每隔6个小时生成的,实例2是正常的。...测试实例1备库的连通性 查看实例1的406归档,发现存在 检查standby logfile是否正常 ...
  • [wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory “/etc/kubernetes/manifests”. This can take up to 4m0s 报错 [kubelet-check] Initial timeout of ...
  • 原文链接:...What is the correct way to wait for VBLANK to present on windows 10 in windowed mode? Currently I'm doing the following: D3DKMTWaitForVertica

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 381,575
精华内容 152,630
关键字:

for的区别to和waitwait