nightscream 2023-05-26 15:17 采纳率: 100%
浏览 13
已结题

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()
  • 写回答

1条回答 默认 最新

  • 刘家旺1 2023-05-26 15:27
    关注

    该回答引用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()
    

    希望能帮到你解决问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月3日
  • 已采纳回答 5月26日
  • 创建了问题 5月26日

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集