2018-08-21


一闪金、打開chrome瀏覽器

1. 安裝chrome瀏覽器

2. 下載控制chrome的驅(qū)動(dòng)器

chrome的版本和chromedriver的版本對(duì)應(yīng)關(guān)系和下載地址
https://blog.csdn.net/huilan_same/article/details/51896672

存放路徑:
/工程名/src/main/resources/selenium/driver/chromedriver.exe

3. 下載selenium的jar包

pom.xml添加dependency

<project>
    <dependencies>
        <!--selenium框架 -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>2.50.0</version>
        </dependency>

        <!--testNG測(cè)試框架 -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8</version>
        </dependency>
    </dependencies>
</project>

4. 新建java類武鲁,啟動(dòng)瀏覽器

自寫的類——>selenium——>chromedriver.exe——>chrome瀏覽器

        //此處src前面沒有"/",說明是相對(duì)工程根目錄的路徑
        System.setProperty("webdriver.chrome.driver",
        "src/main/resources/selenium/driver/chromedriver.exe");
        WebDriver driver = new ChromeDriver();

如果要窗口最大化,先設(shè)置參數(shù)翔悠,啟動(dòng)的時(shí)候傳入

        //設(shè)置環(huán)境變量番宁,指定chromedriver的路徑
        System.setProperty("webdriver.chrome.driver",
                "src/main/resources/selenium/driver_v236_63_65/chromedriver.exe");

        //設(shè)置瀏覽器的參數(shù)
        ChromeOptions options = new ChromeOptions();
        //最大化瀏覽器
        options.addArguments("--test-type", "--start-maximized");
        //指定瀏覽器位置
            //options.setBinary("C:/XXXXXXX/chrome.exe");
        //打開瀏覽器
        WebDriver driver = new ChromeDriver(options);

常見報(bào)錯(cuò)原因:

  1. 瀏覽器和chromedriver版本不一致
  2. 防火墻導(dǎo)致無(wú)法訪問chrome瀏覽器,關(guān)閉防火墻

5. 關(guān)閉瀏覽器

        //先線程休眠3秒氮昧,便于觀察框杜,然后才關(guān)閉浦楣,不然啟動(dòng)就關(guān)閉像閃退
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //關(guān)閉瀏覽器,driver.close()是關(guān)閉當(dāng)前窗口
        driver.quit();

sleep()方法:

    public static void sleep(int millis) {
        try {
            Thread.sleep(millis);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

二咪辱、地址欄和導(dǎo)航(前進(jìn)振劳、后退、刷新)

1. get()方法打開

        driver.get("http://www.baidu.com");

2. navigate().to()打開

driver.navigate().to("http://www.dangdang.com");

3. navigate導(dǎo)航

        // 1\. 先打開一個(gè)界面
        driver.navigate().to("http://www.baidu.com");

        //2\. to()方法再打開另一個(gè)界面
        driver.navigate().to("http://www.dangdang.com");
        sleep(2000);
        //3\. back()回退
        driver.navigate().back();
        sleep(2000);
        //4\. forward()前進(jìn)
        driver.navigate().forward();
        sleep(2000);
        //5\. refresh()刷新
        driver.navigate().refresh();

三油狂、4種常見方式定位元素

元素包含信息:

  1. 標(biāo)簽
  2. 屬性
  3. 內(nèi)容
  4. 位置

1. 按id屬性定位元素

        WebElement alertButton = driver.findElement(By.id("alertButtonId"));

2. 按name屬性定位元素

        WebElement alertButton = driver.findElement(By.name("alertButtonName"));

3. 按class定位元素

        WebElement buttons = driver.findElements(By.className("alertButtonClass"));

4. 使用xpath定位

1)自動(dòng)化處理的對(duì)象:標(biāo)簽(也稱為元素)

java html
WebElement元素類 標(biāo)簽(如html历恐、body、head专筷、table弱贼、input、tr磷蛹、alert彈出框等等)

2) 標(biāo)簽

  1. 標(biāo)簽名
  2. 標(biāo)簽的屬性
    • 為了定位標(biāo)簽的屬性:id吮旅、name、class味咳、type
    • 為了產(chǎn)生交互效果的屬性:觸發(fā)事件庇勃,可以指定觸發(fā)后要執(zhí)行的方法
  3. 要標(biāo)識(shí)的數(shù)據(jù):標(biāo)簽都是為了描述數(shù)據(jù)的

2)xpath:選擇html標(biāo)簽

符號(hào) 用途 示例
/ 絕對(duì)路徑 /html/body/table/tbody/tr/td/input
// 相對(duì)路徑 //body/table//input
標(biāo)簽名 html的所有標(biāo)簽 //input
[] 限定t條件 //input[@id='xxxid' and @type='button']
數(shù)字 指定匹配到的第幾個(gè) //input[3]
@屬性名=屬性值 通過屬性限定條件
函數(shù)() 通過函數(shù)限定條件
and/or 連接多個(gè)條件
WebElement alertButton = driver.findElement(
            By.xpath("http://input[@id='alertButtonId' and @type='button']"));

四、常見元素的基本操作

0. 界面模板

<html>
    <head>
        <title>導(dǎo)航欄</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    </head>

    <body>
        xxxxxx替換元素代碼xxxxxxx
    </body>

</html>

1. text文本框

界面:
<input type="text" name="edit" id="edit" value="" />

自動(dòng)化代碼

sendkeys()傳要填的內(nèi)容

        WebElement text=
        driver.findElement(By.xpath("http://input[@type='text' and @id='edit']"));
        text.clear();
        text.sendKeys("傻不傻槽驶?傻责嚷!");

2. file文件上傳

界面:
<input type="file" name="attach[]" />

自動(dòng)化代碼

找到元素,sendkeys()傳文件路徑

        WebElement input=
        driver.findElement(By.xpath("http://input[@type='file' and @name='attach[]']"));
        input.clear();
        input.sendKeys("C:/HtmlWeb/selenium/html_00_summary.html");

3. radio單選框

界面:
<input type='radio' name="company" value='Baidu' /> <label>百度</label> <br/> 
<input type='radio' name="company"  value="AliBaBa"/> <label>阿里巴巴</label><br/>
<input type='radio' name="company" value='Tencent' checked /><label>騰訊</label><br/> 
<input type='radio' name="company" value='Mi' /> <label>小米</label>

自動(dòng)化代碼

input元素掂铐,類型是raidio再层,name相同的多個(gè)radio類型的input組成選項(xiàng),靠value進(jìn)行區(qū)分

選擇具體某個(gè)選項(xiàng)堡纬,并選擇:

        WebElement radio=
        driver.findElement(
                By.xpath("http://input[@type='radio' and @name='company' and @value='Mi']"));
        radio.click();

所有選項(xiàng)都點(diǎn)一遍:

        List<WebElement> radios=
        driver.findElements(By.xpath("http://input[@type='radio' and @name='company']"));
        for(int i=0;i<radios.size();i++){
            WebElement item=radios.get(i);
            sleep(1000);
        }

4. checkbox多選框

界面:
<input type="checkbox" name="course" value="web" /><label>網(wǎng)絡(luò)</label><br />
<input type="checkbox" name="course" value="training" /><label>培訓(xùn)</label><br />
<input type="checkbox" name="course" value="friend" /><label>朋友介紹</label><br />
<input type="checkbox" name="course" value="other" /><label>其他方式</label>

自動(dòng)化代碼

input元素聂受,類型是checkbox,name相同的多個(gè)checkbox類型的input組成選項(xiàng)烤镐,靠value進(jìn)行區(qū)分

選擇具體某一個(gè)選項(xiàng)蛋济,并選擇:

        WebElement checkbox=
        driver.findElement(
                By.xpath("http://input[@type='checkbox' and @name='course' and @value='web']"));
        checkbox.click();

所有選項(xiàng)都勾選:

        List<WebElement> checkboxs=
        driver.findElements(
                By.xpath("http://input[@type='checkbox' and @name='course']"));
        for(int i=0;i<checkboxs.size();i++){
            WebElement item=checkboxs.get(i);
            item.click();
            sleep(1000);
        }

5. 時(shí)間控件

界面:
<input type="date" name="startTime">

自動(dòng)化代碼

先寫JavaScript代碼,然后通過driver執(zhí)行js
js第一句是將只讀屬性去掉(若時(shí)間沒設(shè)只讀炮叶,則不需要)
js第二句是給時(shí)間元素設(shè)置value屬性碗旅,值為“2018-04-10”

String js="document.getElementsByName('startTime')[0].removeAttribute('readOnly');document.getElementsByName('startTime')[0].setAttribute('value','2018-04-10');";
        JavascriptExecutor jsDriver = (JavascriptExecutor) driver;
        jsDriver.executeScript(js);

6. button按鈕

界面:
<input type="button" name="promptbutton"
       value="測(cè)試prompt對(duì)話框" onclick="confirm('確定提交嗎?');" />

自動(dòng)化代碼

找到元素镜悉,click()點(diǎn)擊

        WebElement button=
        driver.findElement(By.xpath("http://input[@type='button' and @id='alertButtonId']"));
        button.click();
        Alert alert=driver.switchTo().alert();
        alert.accept();

7. 文本域

界面:

多行多列的輸入框

<textarea rows="3" ></textarea>

自動(dòng)化代碼
        WebElement textarea=driver.findElement(By.xpath("http://textarea[@rows='3']"));
textarea.clear();
textarea.sendKeys(“內(nèi)容”);

8. img圖片

界面:

可點(diǎn)擊的圖片祟辟,都是外面有一層<a>超鏈接,只是用圖片替代了文本
自動(dòng)化測(cè)試的時(shí)候侣肄,要定位的是<a>超鏈接

<a id='imgA'>
  <img src="xxxx">
</a>

自動(dòng)化代碼
  1. 定位<a>標(biāo)簽
  2. 點(diǎn)擊
        WebElement img=driver.findElement(By.xpath("http://a[@id='imgA']"));
        img.click();

7. select選擇框

界面:

select標(biāo)簽:定義一個(gè)下拉框
option選項(xiàng):定義一個(gè)選項(xiàng)旧困,一個(gè)下拉框可以有很多個(gè)選項(xiàng),即多個(gè)option
option的3個(gè)屬性:index(選項(xiàng)序號(hào),默認(rèn)自動(dòng)加上的)吼具、value選項(xiàng)值僚纷、visibleText展現(xiàn)文字

<select id="Selector">
        <option value="apple" >蘋果</option>
        <option value="peach" >桃子</option>
        <option value="banana" >香蕉</option>
        <option value="orange">桔子</option>
        <option value="grape" >葡萄</option>
        <option value="mango" >芒果</option>
</select> 

自動(dòng)化代碼
  1. 先找select標(biāo)簽
  2. 再找option標(biāo)簽,并選擇
    • 把select標(biāo)簽封裝成Select對(duì)象(封裝了找select下面所有option的操作)
    • 通過value拗盒、展現(xiàn)文本怖竭、序號(hào)
        WebElement selectEle=driver.findElement(By.xpath("http://select[@id='Selector']"));
        Select select=new Select(selectEle);
        select.selectByIndex(0);
        sleep(1000);
        select.selectByValue("banana");
        sleep(1000);
        select.selectByVisibleText("桔子");
        sleep(1000);

8. a超鏈接

界面:
<a >Copyright 2017 guoyasoft</a>

自動(dòng)化代碼

定位超鏈接的3中方法:

  1. 使用xpath
WebElement link=
        driver.findElement(By.xpath("http://a[@));

  1. 使用linkText:按鏈接的文本精確匹配
WebElement link=driver.findElement(By.linkText("Copyright 2017 guoyasoft"));

  1. 使用partialLinkText:按鏈接的文本模糊匹配
WebElement baike=driver.findElement(By.partialLinkText("guoyasoft"));

三種點(diǎn)擊方式:1、 當(dāng)前界面打開陡蝇;2痊臭、新的標(biāo)簽頁(yè)打開;新的窗口打開

直接點(diǎn)擊:當(dāng)前界面打開

        WebElement link=
        driver.findElement(By.xpath("http://a[@));
        link.click();

ctrl+shift+點(diǎn)擊:當(dāng)前瀏覽器的新標(biāo)簽頁(yè)打開

        Actions actions=new Actions(driver);
        actions.keyDown(Keys.SHIFT).keyDown(Keys.CONTROL).click(link).perform();

shift+點(diǎn)擊:新窗口打開(新開一個(gè)瀏覽器)

        Actions actions=new Actions(driver);
        actions.keyDown(Keys.SHIFT).click(link).perform();

五登夫、alert框切換

界面:
            <tr>
                <td>prompt對(duì)話框</td>
                <td><input type="button" name="promptbutton"
                    value="測(cè)試prompt對(duì)話框" onclick="clickbutton();" /></td>
            </tr>

javascript:

    function clickbutton() {
            var name = prompt("測(cè)試prompt對(duì)話框", "");
            if (name != null && name != "") {
                //document.write(name);
                alert(name);
            }
        }

自動(dòng)化代碼
       WebElement clickOnPrompt = driver.findElement(By
               .xpath("http://td/input[@name='promptbutton']"));
       clickOnPrompt.click();
               try {
           Thread.sleep(2000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }   
       Alert prompt = driver.switchTo().alert();
               try {
           Thread.sleep(2000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }   
       prompt.sendKeys("I love Selenium");
       prompt.accept();
               try {
           Thread.sleep(2000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }   
       Alert afterAccept = driver.switchTo().alert();
       afterAccept.accept();
           try {
           Thread.sleep(2000);
       } catch (InterruptedException e) {
           e.printStackTrace();
       }   

六广匙、窗口切換

界面:
            <tr>
                <td>超鏈接</td>
                <td>
                    <div>
                        <a id="link_baidu" >百度</a>
                    </div>
                    <div>
                        <a id="link_jd" >京東</a>
                    </div>
                    <div>
                        <a id="link_dangdang" >當(dāng)當(dāng)</a>
                    </div>
                </td>
            </tr>

自動(dòng)化代碼

核心代碼:

  1. driver.getWindowHandle()獲取當(dāng)前窗口句柄
  2. driver.getWindowHandles()獲取瀏覽器所有窗口句柄
  3. driver.switchTo().windows(目標(biāo)句柄)
  4. 根據(jù)窗口的title判斷選擇的窗口是否正確(先切換控制,再查titile)
    public static void switchToWindow(String windowTitle, WebDriver dr) {
        // 將頁(yè)面上所有的windowshandle放在入set集合當(dāng)中
        String currentHandle = dr.getWindowHandle();
        Set<String> handles = dr.getWindowHandles();
        for (String s : handles) {
            dr.switchTo().window(s);
            // 判斷title是否和handles當(dāng)前的窗口相同
            if (dr.getTitle().contains(windowTitle)) {
                break;// 如果找到當(dāng)前窗口就停止查找
            }
        }
    }

實(shí)踐測(cè)試:

  1. 打開測(cè)試界面
  2. 打開京東悼嫉,切回原窗口
  3. 打開百度,切回原窗口
  4. 打開當(dāng)當(dāng)拼窥,切回原窗口
    private void testWindow(WebDriver driver, TestSelenium3 test) {
        /*
         * 第1步:打開測(cè)試界面
         */
        driver.get("http://127.0.0.1:8081/HtmlWeb/selenium/html_00_summary.html");
        Actions actions = new Actions(driver);

        /*
         * 第2步:點(diǎn)擊京東戏蔑,再切換回原界面
         */
        WebElement jd = driver.findElement(By.xpath("http://a[@id='link_jd']"));
        //按順序點(diǎn),按順序放
        actions.keyDown(Keys.SHIFT).keyDown(Keys.CONTROL).click(jd)
                .keyUp(Keys.SHIFT).keyUp(Keys.CONTROL).perform();
        test.mySleep(1000);

        //窗口切換到京東鲁纠,進(jìn)行操作总棵,此處不做任何操作
        switchToWindow("京東", driver);
        test.mySleep(1000);

        //切換回原窗口
        switchToWindow("selenium", driver);
        test.mySleep(1000);

        /*
         * 第3步:點(diǎn)擊百度,再切換回原界面
         */
        WebElement baidu = driver
                .findElement(By.xpath("http://a[@id='link_baidu']"));
        actions.keyDown(Keys.SHIFT).keyDown(Keys.CONTROL).click(baidu)
                .keyUp(Keys.SHIFT).keyUp(Keys.CONTROL).perform();
        actions.click();
        test.mySleep(1000);

        switchToWindow("百度一下改含,你就知道", driver);
        test.mySleep(1000);

        switchToWindow("selenium", driver);
        test.mySleep(1000);
        /*
         * 第4步:點(diǎn)擊當(dāng)當(dāng)情龄,再切換回原界面
         */
        WebElement dangdang = driver.findElement(By
                .xpath("http://a[@id='link_dangdang']"));
        actions.keyDown(Keys.SHIFT).keyDown(Keys.CONTROL).click(dangdang)
                .keyUp(Keys.SHIFT).keyUp(Keys.CONTROL).perform();
        actions.click();
        test.mySleep(1000);
        switchToWindow("當(dāng)當(dāng)", driver);
        test.mySleep(1000);

        switchToWindow("selenium", driver);
        test.mySleep(1000);

    }

七、切換界面框架frame

1. 界面代碼

1.1 main.html

<html>
<head>
<title>iframe測(cè)試界面</title>
</head>
<frameset rows="15%,75%,*" frameborder="1" framespacing="10">
    <frame src="top.html"></frame>
    <frameset cols="20%,*">
        <frame src="left.html"></frame>
        <frame src="right.html" name="content"></frame>
    </frameset>
    <frame src="button.html"></frame>
</frameset>
</html>

1.2 top.html

<html>
<body>
 <!--圖片放到webapp/images下面-->
    <img src="../../images/top.png" width="90%" height="80%">
</body>
</html>

[圖片上傳失敗...(image-e61e46-1534842841384)]

1.3 left.html

<html>

<body>
    <ul>
        <li><a  target="content">百度</a></li>
        <li><a  target="content">京東</a></li>
        <li><a  target="content">淘寶</a></li>
        <li><a  target="content">當(dāng)當(dāng)</a></li>
        <li><a  target="content">優(yōu)酷</a></li>
    </ul>
</body>
</html>

1.4 right.html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>管理頁(yè)面</title>
</head>
<body>該界面用于展示菜單內(nèi)容
</body>
</html>

1.5 button.html

<html>

<body>

    <img src="../../images/button.png" width="90%" height="75%" >
</body>
</html>

[圖片上傳失敗...(image-720a89-1534842841383)]

2. frame測(cè)試代碼

第1步:打開測(cè)試界面

driver.get("http://127.0.0.1:8081/HtmlWeb/selenium/iframe2/main.html");

第2步:找到左邊導(dǎo)航frame框

WebElement leftFrame=driver.findElement(By.xpath("http://frame[@src='left.html']"));

第3步:切換控制權(quán)到frame窗口

driver.switchTo().frame(leftFrame);

第4步:測(cè)試frame框里的內(nèi)容

WebElement baidu=driver.findElement(By.xpath("http://a[@));
            baidu.click();
            test.mySleep(2000);

第5步:將控制窗口切換回原主窗口

driver.switchTo().defaultContent();

第6步:定位右窗口捍壤,即點(diǎn)擊連接后打開的內(nèi)容

WebElement rightFrame=driver.findElement(By.xpath("http://frame[@src='right.html']"));

第7步:切換到右邊的frame窗口

driver.switchTo().frame(rightFrame);

第8步:測(cè)試右窗口

            test.mySleep(3000);
            WebElement input=driver.findElement(By.xpath("http://input[@id='kw']"));
            input.clear();
            input.sendKeys("果芽軟件");

            WebElement submit=driver.findElement(By.id("su"));
            submit.click();
            test.mySleep(2000);

            //定位超鏈接元素的專用方法(精確和模糊兩種骤视,類似id和name選擇器)
            WebElement baike=driver.findElement(By.linkText("上海果芽軟件科技有限公司_百度百科"));
            //WebElement baike=driver.findElement(By.partialLinkText("果芽軟件"));

            baike.click();
            test.mySleep(2000);

八、設(shè)置界面加載和元素定位等待時(shí)間

1. 線程休眠

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

2. 隱式等待

        //設(shè)置界面加載等待時(shí)間鹃觉,全局設(shè)置专酗,作用于driver,對(duì)所有后續(xù)界面加載都有效
        driver.manage().timeouts().pageLoadTimeout(3000, TimeUnit.MILLISECONDS);
        driver.get("http://www.baidu.com");
        //設(shè)置元素定位超時(shí)等待時(shí)間盗扇,全局設(shè)置祷肯,作用于driver,對(duì)所有后續(xù)元素定位都有效
        driver.manage().timeouts().implicitlyWait(3000, TimeUnit.MILLISECONDS);
        WebElement element=driver.findElement(By.xpath("kw"));

3. 顯示等待

        WebDriverWait wait=new WebDriverWait(driver, 2);
        wait.until(new ExpectedCondition<Boolean>() {
            public Boolean apply(WebDriver d) {
                boolean loadcomplete = d.findElement(By.xpath("")).isDisplayed();
                return loadcomplete;
                }
                });

常見錯(cuò)誤

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疗隶,一起剝皮案震驚了整個(gè)濱河市佑笋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌斑鼻,老刑警劉巖蒋纬,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡颠锉,警方通過查閱死者的電腦和手機(jī)法牲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)琼掠,“玉大人拒垃,你說我怎么就攤上這事〈赏埽” “怎么了悼瓮?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)艰猬。 經(jīng)常有香客問我横堡,道長(zhǎng),這世上最難降的妖魔是什么冠桃? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任命贴,我火速辦了婚禮,結(jié)果婚禮上食听,老公的妹妹穿的比我還像新娘胸蛛。我一直安慰自己,他們只是感情好樱报,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布葬项。 她就那樣靜靜地躺著,像睡著了一般迹蛤。 火紅的嫁衣襯著肌膚如雪民珍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天盗飒,我揣著相機(jī)與錄音嚷量,去河邊找鬼。 笑死逆趣,一個(gè)胖子當(dāng)著我的面吹牛津肛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汗贫,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼身坐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了落包?” 一聲冷哼從身側(cè)響起部蛇,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咐蝇,沒想到半個(gè)月后涯鲁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年抹腿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岛请。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡警绩,死狀恐怖崇败,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肩祥,我是刑警寧澤后室,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站混狠,受9級(jí)特大地震影響岸霹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜将饺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一贡避、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧予弧,春花似錦刮吧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)琉历。三九已至坠七,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間旗笔,已是汗流浹背彪置。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝇恶,地道東北人拳魁。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像撮弧,于是被迫代替她去往敵國(guó)和親潘懊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1贿衍、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_x閱讀 15,968評(píng)論 3 119
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案授舟? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 01 你的微信上,有你很在乎的朋友嗎贸辈? 你們多久沒見了释树。 ta最初在你心中留下的印象,是否已被朋友圈掩蓋。 以前奢啥,...
    拾凡時(shí)光閱讀 453評(píng)論 0 0
  • 好久沒吃方便面了秸仙,煮著吃都很少更不用說泡著吃,也許這是人慢慢長(zhǎng)大的節(jié)奏吧桩盲,以前超愛吃方便面的我寂纪,現(xiàn)在就算再...
    語(yǔ)甜閱讀 180評(píng)論 0 0