当前位置: 首页 > 知识库问答 >
问题:

如何用Python编写适当的函数文件

充高扬
2023-03-14

我想写一个包含我们想在项目中使用的函数的Python文件。我们正在为Instagram开发一个硒网刮擦机器人。现在我们在脚本中编写所有的函数,但是我们想制作一个“函数”文件,我们将导入并用于我们的脚本。但问题是,当我想使用像driver.find_element_by_xpath(cookies_button_xpath)这样的网络驱动程序函数时,VS代码不使用自动完成。函数文件(还没有完成)是这样的:

import time

from selenium.webdriver.common.keys import Keys
from selenium import webdriver

# set constants for functions to run
WEBSITE_PRE_FIX = 'https://www.instagram.com/'
FORBIDDEN_CAPTION_WORDS = ['link in bio','buy now','limited time']

def open_ig(driver: webdriver):
    # opens the website and waits till it is loaded
    driver.get(WEBSITE_PRE_FIX)
    time.sleep(2)

    # accept cookies
    cookies_button_xpath = "/html/body/div[4]/div/div/button[1]"
    driver.find_element_by_xpath(cookies_button_xpath).click()

def login(driver: webdriver, username, password):
    time.sleep(2)
    
    # fill in user name and password and log in
    username_box_xpath = '/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[1]/div/label/input'
    username_element = driver.find_element_by_xpath(username_box_xpath)
    username_element.send_keys(username)

    password_box_xpath = '/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[2]/div/label/input'
    password_element = driver.find_element_by_xpath(password_box_xpath)
    password_element.send_keys(password)
    password_element.send_keys(Keys.ENTER)

    # click on do not save username and password + do not turn on notifications
    time.sleep(3)
    dont_save_username_button_password_xpath = '/html/body/div[1]/section/main/div/div/div/div/button'
    dont_save_username_button_element = driver.find_element_by_xpath(dont_save_username_button_password_xpath)
    dont_save_username_button_element.click()

因此,代码确实可以工作(就像它运行并做我想要的那样),但我想知道我们是否可以用另一种方式编写函数文件,以便像颜色过滤器中的自动完成这样的工作。我不完全确定这是否可能。如果有任何其他方法来编写函数文件,欢迎提供所有建议。


共有1个答案

颛孙信厚
2023-03-14

你试过把函数文件写成一个简单的类吗?

class FunctionsFile():
    def __init__(self):
        self.website_pre_fix = 'https://www.instagram.com/'
        self.forbidden_capture_words = ['link in bio','buy now','limited time']

    def open_ig(self, driver: webdriver):
        # opens the website and waits till it is loaded
        driver.get(WEBSITE_PRE_FIX)
        time.sleep(2)

        # accept cookies
        cookies_button_xpath = "/html/body/div[4]/div/div/button[1]"
        driver.find_element_by_xpath(cookies_button_xpath).click()

    def login(self, driver: webdriver, username, password):
        time.sleep(2)
    
        # fill in user name and password and log in
        username_box_xpath = '/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[1]/div/label/input'
        username_element = driver.find_element_by_xpath(username_box_xpath)
        username_element.send_keys(username)

        password_box_xpath = '/html/body/div[1]/section/main/article/div[2]/div[1]/div/form/div/div[2]/div/label/input'
        password_element = driver.find_element_by_xpath(password_box_xpath)
        password_element.send_keys(password)
        password_element.send_keys(Keys.ENTER)

        # click on do not save username and password + do not turn on notifications
        time.sleep(3)
        dont_save_username_button_password_xpath = '/html/body/div[1]/section/main/div/div/div/div/button'
        dont_save_username_button_element = driver.find_element_by_xpath(dont_save_username_button_password_xpath)
        dont_save_username_button_element.click()

然后可以在任何文件中实例化该类。如果在同一目录中:

from FunctionsFile import FunctionsFile

funcs = FunctionsFile()
funcs.open_ig(driver)

应该使用标准VS代码配色方案和自动补全。(我想无论如何)。

 类似资料:
  • 问题内容: 我有一个函数数组,我试图产生一个由数组中元素组成的函数。我的方法是: 此方法似乎无效,将不胜感激。 (我要反转列表,因为这是我希望函数成为的组合顺序) 问题答案: 它不起作用,因为您在循环中创建的所有匿名函数都引用相同的循环变量,因此共享其最终值。 作为快速解决方案,您可以将分配替换为: 或者,您可以从函数返回lambda: 要了解发生了什么,请尝试以下实验: 这个结果使许多人感到惊讶

  • 我有一个函数数组,我试图生成一个函数,它由数组中的元素组成。我的做法是: 此方法似乎不起作用,请给予帮助。 (我正在反转列表,因为这是我希望函数的组合顺序)

  • 问题内容: 如何正确使用Javadoc? 我的意图是拥有一个带有抽象方法的抽象类。这些方法具有javadoc注释。现在,如果我扩展了抽象类,则将覆盖这些方法并要使用。 但对于所有的参数,可以如用于该链接似乎没有工作时。Eclipse仍然抱怨。 那么我该如何使用呢? 问题答案: 为了包括超类的文档,您不应使用not 。 然后,您将获得超类的文档。您可以添加它,并且可以覆盖诸如和所需的东西。

  • 本文向大家介绍如何在Python中编写递归函数?,包括了如何在Python中编写递归函数?的使用技巧和注意事项,需要的朋友参考一下 一个递归 函数是它的执行过程中调用自身的函数。这使函数可以重复多次,输出结果和每次迭代的结束。递归与无限有关。  下面是一个递归函数示例,用于查找整数的阶乘。 数字的阶乘 是从1到该数字的所有整数的乘积。  例如,阶乘9(表示为9!)为1 * 2 * 3 * 4 *

  • 我知道如何通过将两个函数作为输入并输出其合成函数来合成两个函数,但如何返回合成函数f(f(…f(x))?谢谢

  • 假设我们在下面的数据框中有一个带有