Python我如何把一个脚本分解成小脚本?

cdmah0mi  于 2023-03-11  发布在  Python
关注(0)|答案(2)|浏览(107)

我刚刚开始学习Python,我正在深入学习Selenium,试图从反复试验中学习(所以请对我宽容一点)-我搜索了又搜索,但我认为作为一个新手,我只是在搜索错误的术语,因为我没有成功

我已经不再使用PHP,因此我将尝试解释如何使用PHP作为支柱

假设我们有一个主脚本和一个登录脚本。在主脚本中,我们声明了一个“浏览器”对象,例如...登录脚本然后愉快地使用这个浏览器对象来执行登录。没有问题,它在PHP中工作

//mainscript.php

require_once("login.php");
$browser = Object.browser;
login();

//login.php

function login(){
   //general login stuff goes here
   $browser.login();
}

让我们看一下Python......在Python中做同样的事情
未定义浏览器。
如何通过像PHP示例中那样导入Python中的脚本,将其分解为更小的块?否则,它将是一个无法读写的大文件!

我需要能够将脚本分成几个部分,以便“登录”等功能不会阻塞主脚本页面,可以根据需要从主脚本调用它们

//mainscript.py

import login
browser = webdriver.Firefox()
browser.get(webpage)
Login()

//login.py

def Login:
   //do some login stuff
   browser.find_element(...).click()

我试过在互联网上查找,但我认为我搜索了错误的搜索词,因为我还不熟悉Python

pftdvrlh

pftdvrlh1#

当你import login时,你导入了 * 模块 * login.py。这个导入的模块包含了login.py的所有变量,函数,类等等,但是import语句没有把它们放到全局作用域中。
因此,您需要执行以下操作之一:
1.指定要导入全局范围的属性:

from login import Login
Login()

1.使用点标记法从导入的模块访问属性:

import login
login.Login()

1.从模块导入所有属性**(不推荐)**:
这与PHP中的require_once非常相似,但被认为是不好的做法,因为它可能导致命名空间污染和名称冲突。

from login import *
Login()

顺便说一句,python中的函数名和变量名通常以小写字母开始,而类名则以大写字母开头。

lyr7nygr

lyr7nygr2#

我的建议是对页面对象模型做一些研究。基本概念是每个页面都在不同的类文件中,包含该页面的所有定位器和用户需要在该页面上执行的任何操作的方法。这样做的优点是更好的组织、更容易维护、代码重用等。
一些帮助您入门的资源:

  1. Selenium python docs, Page Objects
  2. Page Object Model (POM) In Selenium Python on lambdatest.com
  3. Page Object Model and Page Factory in Selenium Python on browserstack.com

相关问题