【问题标题】:Python selenium send keys fast wayPython selenium 快速发送密钥的方式
【发布时间】:2020-04-21 08:30:47
【问题描述】:

我正在使用 send.key 在文本文件中写一些东西,但是速度很慢,有什么替代方法?我尝试使用driver.execute,但现在可以使用,有什么办法吗?比如复制粘贴什么的......

message = "100000000000 words"



def Facebook():
    usr = ''
    pwd = ''

    driver.get('https://www.facebook.com/')

    username_box = driver.find_element_by_id('email')
    username_box.send_keys(usr)

    password_box = driver.find_element_by_id('pass')
    password_box.send_keys(pwd)

    login = driver.find_element_by_id('loginbutton')
    login.click()
    sleep(2)

    for i in group_list:
        driver.get(i)
        sleep(2)
        post_box = driver.find_element_by_xpath("//*[@name='xhpc_message_text']")
        sleep(5)
        post_box.send_keys(message)
        sleep(4)
        post_element = driver.find_element_by_xpath('./html/body/div[1]/div[3]/div[1]/div/div[2]/div[2]/div[2]/div[2]/div[3]/div[1]/div/div/div[2]/div[1]/div/div/div/div[2]/div/div[2]/div[3]/div/div[2]/div/div[2]/button')
        post_element.click()
        print('Sucsesfully posted')
        sleep(5)

Facebook()

【问题讨论】:

    标签: python python-3.x selenium selenium-chromedriver


    【解决方案1】:

    Selenium sendKeys 确实相当慢。另一种方法是使用 Javascript 设置文本。我不使用python,但使用Java。我们在 Selenium 中提供了一个 JavascriptExecutor,它允许我们运行 Javascript。您将真正发现 sendKeys 和 javascript 设置文本的区别在于您有 1000 个要填充的文本框。我通过创建一个包含 1000 个文本框的 HTML 页面进行了尝试。运行我的代码以使用 sendKeys 设置文本,然后再次使用 javascript。 Javascript 的速度要快得多。

    代码是这样的。

            JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
            jsExecutor.executeScript("arguments[0].value = MyText;", searchElement);
    
    or
    
            JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
            jsExecutor.executeScript("arguments[0].setAttribute(value,MyText);", searchElement);
    
    
    

    有时你可能需要设置元素的innerText,而不是value属性。

    【讨论】:

      【解决方案2】:

      是的,您可以使用复制和粘贴:

      import pyperclip
      from selenium.webdriver.common.keys import Keys 
      
      pyperclip.copy(message)
      post_box.send_keys(Keys.CONTROL,'v')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-02
        • 1970-01-01
        • 2016-08-05
        • 1970-01-01
        • 2022-11-10
        • 2020-07-30
        • 1970-01-01
        相关资源
        最近更新 更多