pytese + selenium ,如何能正确进行调用

目前在学习自动化测试,遇到问题如下,冥思苦想不得寸进好一阵子。

具体情况:两个模块,basepage.py封装了selenium的一系列方法。再由测试模块test_baidusearch进行调用。但是运行却屡屡出错。打开的浏览器根本无法接受传入的数据。求前辈指点迷津。

文件:basepage.py

from selenium import webdriver
import time

class Base_Page():
    def openurl(self):
        self.driver = webdriver.Firefox(executable_path='../browser/geckodriver.exe')
        time.sleep(3)
        self.driver.quit()

    def inputstr(self,word):
        self.driver.find_element('id','kw').clear()
        self.driver.find_element('id','kw').send_keys(word)
        self.driver.find_element('id','su').click()
        time.sleep(3)

    def gettitle(self):
        return self.driver.title

    def browserquit(self):
        self.driver.quit()

文件2:test_baidusearch.py

from basepage.basepage import Base_Page

class Test_Login():
    def test_login_1(self):
        self.browser = Base_Page()
        self.browser.openurl()
        self.browser.inputstr('selenium')
        title = self.browser.gettitle()
        assert 'selenium' in title
        self.browser.browserquit()

    def test_login_2(self):
        self.browser = Base_Page()

        self.browser.openurl()
        self.browser.inputstr('appium')
        title = self.browser.gettitle()
        assert 'appium' in title
        self.browser.browserquit()

    def test_login_3(self):
        self.browser = Base_Page()

        self.browser.openurl()
        self.browser.inputstr('autotesting')
        title = self.browser.gettitle()
        assert 'autotesting' in title
        self.browser.browserquit()

该回答引用GPT:根据你提供的代码,我看到你在Base_Page类中的openurl方法中使用了self.driver.quit(),这会导致浏览器在打开后立即关闭。因此,当你在测试模块中调用inputstr方法时,浏览器已经关闭了,无法接受传入的数据。

你可以将self.driver.quit()移动到browserquit方法中,这样在测试模块中调用browserquit方法时,浏览器才会关闭。另外,建议在inputstr方法中添加等待页面加载完成的代码,以确保页面加载完成后再进行后续操作。

修改后的代码如下:

basepage.py

from selenium import webdriver
import time

class Base_Page():
    def openurl(self):
        self.driver = webdriver.Firefox(executable_path='../browser/geckodriver.exe')
        time.sleep(3)
 
    def inputstr(self,word):
        self.driver.find_element('id','kw').clear()
        self.driver.find_element('id','kw').send_keys(word)
        self.driver.find_element('id','su').click()
        time.sleep(5)  # 等待页面加载完成
       
    def gettitle(self):
        return self.driver.title
 
    def browserquit(self):
        self.driver.quit()

test_baidusearch.py

from basepage.basepage import Base_Page
 
class Test_Login():
    def test_login_1(self):
        self.browser = Base_Page()
        self.browser.openurl()
        self.browser.inputstr('selenium')
        title = self.browser.gettitle()
        assert 'selenium' in title
        self.browser.browserquit()
 
    def test_login_2(self):
        self.browser = Base_Page()
 
        self.browser.openurl()
        self.browser.inputstr('appium')
        title = self.browser.gettitle()
        assert 'appium' in title
        self.browser.browserquit()
 
    def test_login_3(self):
        self.browser = Base_Page()
 
        self.browser.openurl()
        self.browser.inputstr('autotesting')
        title = self.browser.gettitle()
        assert 'autotesting' in title
        self.browser.browserquit()

希望能帮到你解决问题。