zoukankan      html  css  js  c++  java
  • 测试雪球、等待页面某个元素加载完毕后,再进行点击、父类子类之间的继承

    test_other.py

    测试的case所在的页面

    from selenium import webdriver
    from time import sleep
    import json
    from selenium.webdriver import DesiredCapabilities
    
    from testXueqiu02.BasePage import BasePage
    from testXueqiu02.ProfilePage import ProfilePage
    
    '''先进行登录,再测试其他模块'''
    
    
    class Test_other():
    
        def setup_class(self):
            self.driver = webdriver.Remote(desired_capabilities=DesiredCapabilities.CHROME)
            self.driver.get("https://xueqiu.com/")
            self.driver.implicitly_wait(10)
    
    
        # 自选股票
        def test_profilePage(self):
            print('jinru')
            driver = self.driver
            profile = ProfilePage(driver)
            profile.login()
            selectPage = profile.gotoSelectPage()
            selectPage.select("alibaba","09988")
    
    
    
        def teardown_class(self):
            sleep(10)
            self.driver.quit()

    BasePage.py

    父类,为了初始化driver,便于子类继承

    from selenium.webdriver.remote.webdriver import WebDriver
    
    
    class BasePage(object):
    
        def __init__(self, driver):
            self.driver: WebDriver = driver

    ProfilePage.py

    业务模块所在类

    from testXueqiu02.BasePage import BasePage
    from testXueqiu02.SelectPage import SelectPage
    import json
    
    class ProfilePage(BasePage):
    
    
        def login(self):
            '''加载文件中的cookie'''
            with open('./cookie.txt', 'r', encoding='utf8') as f:
                listCookies = json.loads(f.read())
            '''浏览器加载cookie'''
            for cookie in listCookies:
                cookie_dict = {
                    'domain': '.xueqiu.com',
                    'name': cookie.get('name'),
                    'value': cookie.get('value'),
                    "expires": '',
                    'path': '/',
                    'httpOnly': False,
                    'HostOnly': False,
                    'Secure': False
                }
                self.driver.add_cookie(cookie_dict)
            #  刷新浏览器
            self.driver.refresh()
    
    
        #搜索模块
        def gotoSelectPage(self):
           return  SelectPage(driver)

    等待页面某个元素加载完毕后,再进行点击

    selectPage.py

    股票搜索页面

    from selenium.webdriver.common.by import By
    
    from testXueqiu02.BasePage import BasePage
    from selenium.webdriver.support.wait import  WebDriverWait
    from selenium.webdriver.support import  expected_conditions as EC
    
    
    class SelectPage(BasePage):
    #当页面的icon图标加载出来时,就认为页面加载完毕 def __init__(self,driver): self.driver
    = driver WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,".optional_stocks .iconfont"))) def select(self,keyword,market): self.driver.find_element_by_css_selector(".optional__controls .search__dropdown input").send_keys(keyword) self.driver.find_element_by_xpath("//*[@class='search__dropdown__list']//li[contains(text(),'%s')]" %market).click()

     以下是Java代码

    package com.xueqiu;
    
    import org.testng.annotations.Test;
    
    
    import org.testng.annotations.BeforeClass;
    
    
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.chrome.ChromeDriver;
    import org.testng.annotations.AfterClass;
    
    public class TestXueQiu {
        
         WebDriver driver = null;
        
      @Test
      public void f() throws Exception {
          ProfilePage pp = new ProfilePage(driver);
          pp.login();
          SearchPage sp = pp.gotoSearchPage();
          sp.select("alibaba", "09988");
      }
      
      @BeforeClass
      public void beforeClass() throws Exception {
          System.setProperty("webdriver.chrome.driver", "D:\python\chromedriver.exe");
          driver = new ChromeDriver();
          driver.get("https://xueqiu.com/");
          Thread.sleep(5);
      }
    
      
      
      @AfterClass
      public void afterClass() throws Exception {
          Thread.sleep(2000);
          driver.quit();  
      }
    
    }
    package com.xueqiu;
    
    import org.openqa.selenium.WebDriver;
    
    public class BasePage {
        
        public  WebDriver driver = null;
    
        public BasePage() {
            
        }
        
        public BasePage(WebDriver driver) {
            this.driver = driver;
        }
    
    }
    package com.xueqiu;
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    
    import org.openqa.selenium.Cookie;
    import org.openqa.selenium.WebDriver;
    
    import com.google.gson.Gson;
    
    
    public class ProfilePage extends BasePage{
    
        
        WebDriver driver; 
        
        public ProfilePage() {}
        
        public ProfilePage(WebDriver driver) {
            this.driver = driver;
        }
        
        
        public void login() throws IOException {        
            String path = System.getProperty("user.dir");
            BufferedReader br = new BufferedReader(new FileReader(path+"\src\com\xueqiu\cookie2.txt"));
            String ss=null;
            String len;
            while((len=br.readLine())!=null) {
                ss = len; 
                System.out.println(len);
            }
            br.close();
            System.out.println(ss);
            Gson gson=new Gson();
            MC mc=gson.fromJson(ss, MC.class);
            System.out.println(mc.getCookies().size());
            for(int i=0;i<mc.getCookies().size();i++) {
                 MyCookie  myCookie = mc.getCookies().get(i);
                 Cookie cookie = new Cookie(myCookie.getName(),myCookie.getValue(),myCookie.getDomain(),myCookie.getPath(),myCookie.getExpires(),false,false);    
                 driver.manage().addCookie(cookie);        
            }    
            driver.navigate().refresh();
        }
        
        public SearchPage gotoSearchPage() {
            return new SearchPage(driver);
        }
    }
    package com.xueqiu;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebDriver;
    public class SearchPage  extends BasePage {
    
        WebDriver driver; 
        
        public SearchPage() {}
        
        public SearchPage(WebDriver driver2) {
            this.driver = driver2;
                 
            // 等待页面加载完毕,超时时间设为10秒
    //        (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
    //         
    //            @Override
    //            public Boolean apply(WebDriver driver) {
    //                return driver.getTitle().contains("首页");
    //            }
    //           
    //        });
        
        }
        
        public void select(String keyword,String market) throws InterruptedException {
            driver.findElement(By.cssSelector(".optional__controls .search__dropdown input")).sendKeys(keyword);
            Thread.sleep(3000);
            driver.findElement(By.xpath("//*[@class='search__dropdown__list']//li[contains(text(),'"+market+"')]")).click();
            
        }
        
    }
  • 相关阅读:
    NetBeans 时事通讯(刊号 # 143 Apr 19, 2011)
    道道道
    係要听ROCK N' ROLL
    JPA 缓存与应用集群
    NetBeans 时事通讯(刊号 # 144 Apr 28, 2011)
    係要听ROCK N' ROLL
    道道道
    JPA 缓存与应用集群
    twemproxy (nutcracker) Build Status
    Java 与 C进行Socket通讯
  • 原文地址:https://www.cnblogs.com/ychun/p/14399209.html
Copyright © 2011-2022 走看看