Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium和Python:将WebElement定义为属性的正确方法是什么_Python_Selenium - Fatal编程技术网

Selenium和Python:将WebElement定义为属性的正确方法是什么

Selenium和Python:将WebElement定义为属性的正确方法是什么,python,selenium,Python,Selenium,请参阅以下课程: 浏览器 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.action_chains import ActionChains as actions class Browser: driver = webdriver.Chrome("C:\\chromedriver.exe") webDri

请参阅以下课程:

浏览器

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains as actions


class Browser:

driver = webdriver.Chrome("C:\\chromedriver.exe")
webDriverWait = WebDriverWait(driver, 60)
action = actions(driver)

def goto(self, url):
    Browser.driver.maximize_window()
    Browser.driver.get(url)
主页

from seleniumbase.Browser import Browser
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from seleniumbase.BaseActions import BaseActions


class HomePage:
    url = "myURL"

    def __init__(self):
        self.usernametextbox = Browser.webDriverWait.until(ec.visibility_of_element_located((By.ID, "login_email")))
        self.passwordtextbox = Browser.webDriverWait.until(
            ec.visibility_of_element_located((By.CSS_SELECTOR, "tr[id=mockpass] input")))
        self.loginbutton = Browser.webDriverWait.until(ec.element_to_be_clickable((By.NAME, "login")))

    def getusernametextbox(self):
        return self.usernametextbox

    def getpasswordtextbox(self):
        return self.passwordtextbox

    def getloginbutton(self):
        return self.loginbutton

    def login(self):
        self.getusernametextbox().send_keys("myuser@gmail.com")
        self.getpasswordtextbox().send_keys("12345678")
        self.getloginbutton().click()
如您所见,我将我的
WebElements
定义为

这是写作的方式还是有更好的方式


这是写方法还是有更好的方法?不要在
\uuuu init\uuuuuu
中定义每个元素,请尝试使用以下方法:

@property
def getusernametextbox(self):
    return Browser.webDriverWait.until(ec.visibility_of_element_located((By.ID, "login_email")))

@property
def getpasswordtextbox(self):
    return Browser.webDriverWait.until(ec.visibility_of_element_located((By.CSS_SELECTOR, "tr[id=mockpass] input")))

@property
def getloginbutton(self):
    return Browser.webDriverWait.until(ec.element_to_be_clickable((By.NAME, "login")))

def login(self):
        self.getusernametextbox.send_keys("myuser@gmail.com")
        self.getpasswordtextbox.send_keys("12345678")
        self.getloginbutton.click()

那init呢?我可以删除它吗?如果你的主页实例没有参数的话