示例

DEMO:

System.setProperty("webdriver.chrome.driver", "D:/developkit/driver/chromedriver.exe"); 
WebDriver driver=new ChromeDriver(); 
driver.get("http://www.baidu.com"); 
driver.findElement(By.id("kw1")).sendKeys("Selenium");

支持的浏览器驱动:ChromeDriver, EdgeDriver, FirefoxDriver, InternetExplorerDriver, OperaDriver, SafariDriver

 

1、获取WebElement/WebElements

方法

说明

举例

调用

By.id

通过id查找

<p id="msg">ttttttt</p>

driver.findElement(By.id("msg"))

By.linkText

通过链接文字查找

<a href="http://www.baidu.com">百度</a>

driver.findElement(By.linkText("百度"))

By.partialLinkText

通过部分链接文字查找

<a href="http://www.baidu.com">百度</a>

driver.findElement(By.partialLinkText("百"))

By.name

通过name查找

<p name="myname">tttttttt</p>

driver.findElement(By.name("myname"))

By.tagName

通过标签名查找

<p>tttttttt</p>

driver.findElement(By.tagName("p"))

By.xpath

通过xpath查找

<p>ttttttt</p>

driver.findElement(By.xpath("/p"))

By.cssName

通过css名查找

<p class="normal-text">ttttttt</p>

driver.findElement(By.cssName("normal-text"))

By.cssSelector

通过css选择器查找

<p id="msg">ttttttttt</p>

driver.findElement(By.cssSelector("#msg"))

 

cssSelector的说明:http://www.w3school.com.cn/cssref/css_selectors.asp

xpath的说明:http://www.w3school.com.cn/xpath/index.asp

 

 

2、WebElement常用方法:

 返回值

 方法名

 说明

 void

 clear()

如果找到的元素是input 或  textarea,则清除它的值。其他元素不受影响。 

 void 

 click()

点击一个元素,元素必须可见,并且宽高都必须大于0。如果这个点击操作导致页面刷新的话,

必须要抛弃这个元素的所有引用,并且对这个元素的进一步操作,

都会引发StaleElementReferenceException

 String

 getAttribute(String name) 

通过属性名,获得属性值。例如,我想获得value的值,可以调用getAttribute("value")

 String

 getCssValue(String propertyName)

通过属性名,获得Css属性值,例如getCSSValue("height")

 String

 getTagName()

获得该元素的标签名,例如input,p等

 String

 getText()

获取页面上可见的文字(没有被css隐藏),包括子元素,获得的文本去除任何前导或后置的空格。

例如,html源码是<p id="test">    aaaaa <br/>bbbbb<br/><a href="#">   cccccc    </a></p>

如果我们得到的WebElement ele=driver.findElement(By.id("test")),那么ele.getText()实际输出

aaaaa

bbbbb

cccccc

 boolean

 isDisplayed()

判断该元素是否可见。

 boolean

 isEnabled()

判断元素是否可用。

 boolean

 isSelected()

判断元素是否被选中,只用于单选或者多选按钮(radio button,check box)

 void

 sendKeys(CharSequence... keys)

模拟输入字符

 void 

 submit()

如果当前元素是一个form或者是在form内的一个元素,则会提交表单。

否则,引发NoSuchElementException

 

3、driver.get()和driver.navigate().to()到底有什么不同?

 

ChromeDriver extends RemoteWebDriver, FirefoxDriver extends RemoteWebDriver,还有其他driver均是继承自RemoteWebDriver,而RemoteWebDriver  implements WebDriver ,WebDriver是一个接口。关键在于RemoteWebDriver这个类。

 

 

navigate().to()实际是在调用get(url),可见driver.navigate().to()和driver.get()是一模一样的的,说起来,driver.get()还要比navigate().to()快那么一点点

 

 

4、下拉菜单(Select)的操作(不常用)

 

方法

说明

void deselectAll()

取消所有选择项,仅对下拉框的多选模式有效,若下拉不支持多选模式,则会抛出异常 UnsupportedOperationException(不支持的操作)

void deselectByIndex(int index)

取消指定index的选择,index从零开始,仅对多选模式有效,否则抛出异常 UnsupportedOperationException(不支持的操作)

void deselectByValue(String value)

取消Select标签中,value为指定值的选择,仅对多选模式有效,否则抛出异常 UnsupportedOperationException(不支持的操作)

void deselectByVisibleText(String Text)

取消项的文字为指定值的项,例如指定值为Bar,项的html为 <option value="foo">Bar</option>,仅对多选模式有效,单选模式无效,但不会抛出异常

List<WebElement>getAllSelectedOptions() 

获得所有选中项,单选多选模式均有效,但没有一个被选中时,返回空列表,不会抛出异常

WebElement getFirstSelectedOption() 

获得第一个被选中的项,单选多选模式均有效,当多选模式下,没有一个被选中时,会抛出NoSuchElementException异常

List<WebElement>getOptions() 

获得下拉框的所有项,单选多选模式均有效,当下拉框没有任何项时,返回空列表,不会抛出异常

boolean isMultiple() 

判断下拉框是否多选模式

void selectByIndex(int index)

选中指定index的项,单选多选均有效,当index超出范围时,抛出NoSuchElementException异常

void selectByValue(String value)

选中所有Select标签中,value为指定值的所有项,单选多选均有效,当没有适合的项时,抛出NoSuchElementException异常

void selectByVisibleText(String text)

选中所有项的文字为指定值的项,与deselectByValue相反,但单选多选模式均有效,当没有适合的项时,抛出NoSuchElementException异常

 

总结:select开头的,单选多选均有效;deselect开头的,仅对多选模式有效;返回选中项的,单选多选均有效,返回List的不会抛出异常。

 

5、Selenium窗口切换

切换的方法有两个,一个是通过窗口标题来验证,另一个是通过窗口特定的内容来验证,这两个方法都要求得到的标题或内容是唯一的。

用到的相关方法有:

方法

说明

String getTitle()

返回当前窗口的标题

String getPageSource()

获取最后加载页面的源。如果页面在加载后被修改(例如,由JavaScript),则不能保证返回的文本是修改过的页面。

String getWindowHandle()

获得能唯一标识该驱动实例的句柄

Set<String> getWindowHandles()

获得一组句柄,可用来遍历所有打开的窗口

WebDriver switchTo().window(String nameOrHandle)

切换到指定窗口,如果窗口不存在,则抛出异常 NoSuchWindowException 

 

6、Selenium框架切换

切换框架:是指切换html中的iframe标签元素或者frame标签元素,注意,并不包括frameset

以下是常用的方法:

方法

说明

WebDriver switchTo().frame(int index)

通过索引切换到指定的框架,若框架不存在,则抛出异常 NoSuchFrameException

WebDriver switchTo().frame(String nameOrId)

通过框架的name或者id切换到指定的框架,若框架不存在,则抛出异常 NoSuchFrameException

WebDriver switchTo().frame(WebElement frameElement)

通过元素定位切换到该框架。若元素不稳定,则抛出StaleElementReferenceException,若框架不存在,则抛出NoSuchFrameException

WebDriver switchTo().parentFrame()

切换到父级框架,如果当前框架是最顶级,则不会切换。

WebDriver switchTo().defaultContent()

返回到最顶级的主文档,官方还说了一种可能,就是返回第一个框架,但我暂时未找到这个例子。

 

7、js框操作

js框,就是JavaScript中的警告框(alert),确认框(confirm),提示框(prompt)

Selenium中对js框的操作非常简单,js框在Selenium中被抽象成Alert对象,只有四个方法:   void accept() :点击“确定”按钮   void dismiss() :点击“取消”按钮   Stirng getText() :获得窗口的提示信息   void sendKeys(String keysToSend) :在提示框中输入文档 在操作这些框前,当然需要先切换到他们,所以还需知道一个方法:   Alert switchTo().alert() :切换到js框,并且返回一个Alert对象

 

8、隐式等待 implicitly Wait

 

driver.manage().timeouts().implicitlyWait (long time, java.util.concurrent.TimeUnit unit) * time:等待的时间长度 *    unit:等待的时间单位,例如秒

 

当一个元素不能马上呈现时,指定driver应该等待的时间。若是单个元素的查找,driver会搜索整个页面,直到元素找到或者超过指定的时间。当超过指定时间仍未找到,则会抛出 NoSuchElementException异常。若是查找多个元素,driver会搜索整个页面,直到至少一个元素找到或者超过指定的时间。

  应明智的设置等待时间,因为设置不当,会对测试运行时造成不好的影响。特别是在使用XPath这类比较慢的定位策略时,尤其需要合理使用。

  简单说:如果查找单个元素,找到则马上停止,如果超过指定时间都没找到就抛出找不到的异常。如果查找多个元素,则会在指定时间内尽量查找,但不保证能找到所有。之所以要明智设置等待时间,因为这个方法对于driver来说是全局性的,每次这个driver去查找元素,都会遵循上面的方法。

 

  • 多次设置等待时间,是以最后一次设置为准,并非以最小等待时间或最大等待时间为准。
  • 这个全局设置是当前实例driver独有的,如果你此时新实例化了另一个driver2,那么

driver2的隐式等待与driver无关

 

9、显式等待 explicit Wait

显式等待,其实就是在使用WebDriverWait这个对象,进行等待。显式等待对比隐式等待,多了一些人性化的设置,可以说是更细化的隐式等待。

  WebDriverWait 类继承自泛型类 FluentWait<T> ,而这个泛型类,又是泛型接口 Wait<T> 的实现。Wait<T>这个泛型接口只有一个方法,就是until,这也是我们需要重点掌握的方法,而FluentWait<T>实现了until方法,而且还扩充了一些设置,例如,设置等待时间,每隔多少时间执行一次,执行过程中哪些异常可以忽略,以及超时的时候显示的信息。同样,WebDriverWait既然继承了FluentWait<T>,也会拥有一样的方法。

 

首先,我们如何得到WebDriverWait的实例呢,他的构造函数有3个。

1.WebDriverWait(WebDriver driver, Clock clock, Sleeper sleeper, long timeOutInSeconds, long sleepTimeOut) 

     driver:这个不用说,大家都应该知道。

     clock:Clock是一个接口,clock参数是用来定义超时,一般使用默认即可。关于更详细的Clock

接口,可以点击这里

          sleeper:Sleeper也是一个接口,sleeper这个参数是,让当前线程进入睡眠的一个对象

     timeOutInSeconds:超时的时间,单位是秒

     sleepTimeOut:线程睡眠的时间,默认是500毫秒,也就是默认500毫秒执行一次

  2.WebDriverWait(WebDriver driver, long timeOutInSeconds)

       3.WebDriverWait(WebDriver driver, long timeOutInSeconds, long sleepInMillis)

 

现在我们得到了WebDriverWait对象,怎么实现等待呢。刚说了,until是当中最重要的一个方法,我们看看WebDriverWait中这个until方法的定义。

  public <V> V until(java.util.function.Function<? super WebDriver,V>  isTrue) ,

  until方法中的参数是一个Function,其中? super WebDriver是参数,表示包括WebDriver在内的所有WebDriver的父类,V是返回值的类型。

 

until的参数 ExpectedConditions里面的方法

http://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html

public void testExplicitWait() { try { //driver.get("http://www.cnblogs.com"); driver.get("file:///E:/gitHub/study-self/javase/java/src/selenium/html/wait.html"); //定义超时4秒,默认每500毫秒轮询一次 WebDriverWait wait=new WebDriverWait(driver,4); //重新定义轮询时间,每隔1秒轮询一次 wait.pollingEvery(1000, TimeUnit.MILLISECONDS); //忽略NoSuchElementException异常 wait.ignoring(NoSuchElementException.class); //等待直到标题包含博客园 //wait.until(ExpectedConditions.titleContains("博客园")); //等待直到元素可点击 //wait.until(ExpectedConditions.elementToBeClickable(By.linkText("找找看"))); //等待直到url包含cnblogs.com //wait.until(ExpectedConditions.urlContains("cnblogs.com")); // visibilityOfElementLocated 用于检查某个元素是否出现在页面的DOM上并且可见的期望。可见性意味着不仅显示元素,而且元素的高度和宽度也大于0 wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("inputID"))).sendKeys("hello,selenium"); //等待4秒,每隔1秒定位一次,直至超时或返回要找的元素 /* WebElement ele = wait.until(arg0 -> { return arg0.findElement(By.linkText("找找看")); }); ele.click();*/ } catch (Exception e) { System.out.println("查找元素超时"); } }

 

10、Cookie操作

Selenium操作cookie非常简单,操作的方法主要有:

返回类型

方法和说明

void

addCookie(Cookie cookie) 添加一个cookie

void

deleteAllCookies() 删除当前域名下的所有cookie

void

deleteCookie(Cookie cookie) 删除一个cookie

void

deleteCookieNamed(java.lang.String name) 

删除一个cookie,参数是cookie名

Cookie

getCookieNamed(java.lang.String name) 通过名字得到cookie

java.util.Set<Cookie>

getCookies() 获得当前域名下的所有cookie

 

 

11、截图

ChromeDriver等各类浏览器的driver都继承自RemoteWebDriver,而RemoteWebDriver实现了TakesScreenshot接口,换言之,我们常用的各种driver,ChromeDriver, EdgeDriver, FirefoxDriver, InternetExplorerDriver, OperaDriver, SafariDriver,既实现了WebDriver接口,也实现了TakesScreenshot接口,因此我们可以像使用WebDriver接口一样,使用TakesScreenshot。而TakesScreenshot接口只有一个方法:

 

<X> X getScreenshotAs(OutputType<X> target) throws WebDriverException

 因此,我们可以这样使用: 

//截图作为文件保存 File screenshotFile =((TakesScreenshot)driver).getScreenshotAs (OutputType.FILE); //将图片存为base64 String screenshotBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);

 

公共接口OutputType <T>(定义屏幕截图的输出类型。)

修饰符和类型

栏位及说明

static OutputType<java.lang.String>

BASE64

获取屏幕截图作为base64数据。

static OutputType<byte[]>

BYTES

以原始字节获取屏幕截图。

static OutputType<java.io.File>

FILE

将屏幕快照获取到一个临时文件中,一旦JVM退出,该文件将被删除。

 

而FileHandler,提供了一些静态方法,满足我们常用的文件操作需要,例如

//将一个文件复制到另一个地方 static void copy(java.io.File from, java.io.File to)

 

 

公共类FileHandler ,扩展java.lang.Object(常见文件系统活动的实用程序方法)

修饰符和类型

方法和说明

static void

copy(java.io.File from, java.io.File to) 

static void

copyResource(java.io.File outputDir, java.lang.Class<?> forClassLoader, java.lang.String... names) 

static boolean

createDir(java.io.File dir) 

static boolean

delete(java.io.File toDelete) 

static boolean

isZipped(java.lang.String fileName) 

static boolean

makeWritable(java.io.File file) 

 

12、窗口与导航

 

 一。窗口,也就是window,这里的窗口是指浏览器窗口。他的方法主要有:

返回类型

方法说明

void

fullscreen() 将当前浏览器窗口最大化

Point

getPosition() 获得浏览器左上角位置

Dimension

getSize() 获得当前窗口的大小

void

maximize() 将当前窗口最大化

void

setPosition(Point targetPosition) 设置窗口的位置

void

setSize(Dimension targetSize) 设置窗口的大小

 

二。而导航,也是非常简单,就是控制窗口的前进,后退,刷新等。方法主要有:

返回类型

方法说明

void

back() 后退

void

forward() 前进

void

refresh() 刷新

void

to(java.lang.String url) 跳转到指定url

void

to(java.net.URL url) 跳转到指定url

三。driver.quit和driver.close到底有什么不同

  官方的说明是:

  driver.close:Close the current window, quitting the browser if it's the last window currently open.(关掉最后一个打开的窗口)

  driver.quit:Quits this driver, closing every associated window.(关掉所有相关的窗口)

 

13、执行js

Selenium能够执行js,这使得Selenium拥有更为强大的能力。既然能执行js,那么js能做的事,Selenium应该大部分也能做。这应该得益于JavascriptExecutor这个接口,而ChromeDriver, EdgeDriver, EventFiringWebDriver, FirefoxDriver, InternetExplorerDriver, OperaDriver, RemoteWebDriver, SafariDriver均实现了这个接口。跟使用WebDriver一样,我们可以这样使用该接口: 

WebDriver driver=new ChromeDriver(); JavascriptExecutor jsExecutor=(JavascriptExecutor) driver;

  该接口十分简单,只有两个方法:

  1.java.lang.Object executeScript(java.lang.String script, java.lang.Object... args)   同步执行js

  2.java.lang.Object executeAsyncScript(java.lang.String script, java.lang.Object... args)  异步执行js

  对于返回值:

  1.如果js返回的是html元素,那么方法返回WebElement

  2.如果js返回的是小数,方法返回Double

  3.如果js返回的是非小数,方法返回Long

  4.如果js返回的是布尔,方法返回Boolean

  5.如果js返回的是其他,方法返回String

  6.如果js返回的是数组,方法返回List<Object>,可以嵌套,Object的值的类型是根据上面5条而定。

  7.如果js返回的是map,方法返回Map<String, Object>,Object值类型的定义同上。

  8.如果js返回null或没有返回,方法返回null

 

  对于 arg参数:

  js会用一个“魔法”变量arguments来接收。参数的类型可以是:数字,布尔,字符串,元素(WebElement)以及List<Object>,Object类型为上述类型

 

14、RemoteWebDriver与Grid简介

 

 

具体代码示例如下:

package selenium;import org.junit.Test;
import org.openqa.selenium.*;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Action;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.io.FileHandler;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import util.CollectionUtil;
import util.JacksonUtil;import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;
import java.util.concurrent.TimeUnit;/*** <pre>*       Selenium入门* </pre>** @author zhaominglei* @version 1.00.00* <pre>* 修改记录*    修改后版本:     修改人:  修改日期:     修改内容:* </pre>*/
public class SeleniumTest {static WebDriver driver = null;static {// 指定驱动位置,加载并创建driver对象System.setProperty("webdriver.chrome.driver", "D:/developkit/driver/chromedriver.exe");driver = new ChromeDriver();driver.manage().window().maximize();driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);}/*** 1、元素定位* 2、获取WebElement (findElement/findElements)*/@Testpublic void testElementLocator() {
//        driver.get("http://www.baidu.com");driver.navigate().to("http://www.baidu.com");// By.Iddriver.findElement(By.id("kw")).sendKeys("Selenium");// By.nameWebElement description = driver.findElement(By.name("description"));System.out.println(description.getAttribute("content"));// By.classNameWebElement element = driver.findElement(By.className("s-top-wrap"));List<WebElement> elements = driver.findElements(By.className("s-top-wrap"));System.out.println(element.getAttribute("id"));for (WebElement e : elements) {System.out.println("Elements " + e.getAttribute("id"));}// By.partialLinkTextSystem.out.println(driver.findElement(By.partialLinkText("贴吧")).getText());// By.cssSelectorSystem.out.println(driver.findElement(By.cssSelector("#s-top-left > a:nth-child(2)")).getAttribute("href"));// By.xpathSystem.out.println(driver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[2]")).getAttribute("href"));}/*** 3、WebElement使用及常用方法*/@Testpublic void testElementApi() {try {/** 隐式等待,implicitlyWait()方法比sleep()方法智能,sleep()/*方法只能在一个固定的时间等待,* 而implicitlyWait()可以在一个时间范围内等待,称为隐式等待*/driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);driver.get("https://e.mail.sh.cn/");//窗口最大化driver.manage().window().maximize();// sendKey clearWebElement uid = driver.findElement(By.id("uid")); //账号WebElement password = driver.findElement(By.id("password"));uid.sendKeys("Selenium");uid.clear();// clickdriver.findElement(By.id("languageName")).click();driver.findElement(By.cssSelector("#mainRCommon > div > div.Header > div.select_options.localePanel > ul > a:nth-child(2) > li > span")).click();// 方法1,强制等待,固定休眠时间设置,sleep()方法以毫秒为单位 ,此类为设置5s等待Thread.sleep(1000);// sendKeydriver.get("https://e.mail.sh.cn/?cus=1");uid = driver.findElement(By.id("uid")); //账号password = driver.findElement(By.id("password"));uid.sendKeys("zml");password.sendKeys("123321");// submit不生效 使用clickdriver.findElement(By.id("login_button")).click();String text = driver.findElement(By.xpath("//*[@id=\"logArea\"]/div[3]/span")).getText();System.out.println("输出错误信息" + text);} catch (Exception e) {System.out.println(e);} finally {driver.close();}}/*** 4、下拉菜单(Select)的操作(不常用)*/@Testpublic void testSelectedOption() {try {//转到我们刚才编写的htmldriver.get("E:/gitHub/study-self/javase/java/src/selenium/select.html");driver.manage().window().maximize();//找到下拉框元素WebElement element = driver.findElement(By.name("phones"));//转化为SelectSelect select = new Select(element);select.selectByValue("小米2");//使用可见文字也可以select.selectByVisibleText("中兴");//使用index也可以select.selectByIndex(0);} catch (Exception e) {e.printStackTrace();} finally {driver.close();}}/*** 5、Selenium窗口切换 driver.switchTo().window(windowHandle)* 1.通过句柄切换* 2.通过标题切换* 3.通过内容切换*/@Testpublic void testWindowSwitch() {try {driver.get("https://www.jd.com/");driver.manage().window().maximize();String currentUrl = driver.getCurrentUrl();String title = driver.getTitle();String windowHandle = driver.getWindowHandle();String pageSource = driver.getPageSource();System.out.println("当前页面url " + currentUrl);System.out.println("当前页面title " + title);System.out.println("当前窗口句柄 " + windowHandle); //CDwindow-4C1D098F8E8FA747A5514BF97E15A845//System.out.println("页面内容 " + pageSource);driver.findElement(By.xpath("//*[@id=\"J_cate\"]/ul/li[1]/a")).click();Thread.sleep(2000);// 1、句柄方式driver.switchTo().window(windowHandle);// 2、title方式/*Set<String> handles = driver.getWindowHandles();for(String handler : handles){if (driver.switchTo().window(handler).getTitle().equals(title)){driver.switchTo().window(handler);break;}}*/// 3、pageSource方式/*Set<String> handles = driver.getWindowHandles();for (String handler : handles) {if (driver.switchTo().window(handler).getPageSource().contains("工业品")) {driver.switchTo().window(handler);break;}}*/driver.findElement(By.partialLinkText("工业品")).click();} catch (InterruptedException e) {e.printStackTrace();} finally {driver.close();
//            driver.quit();}}/*** 6、Selenium框架切换(不常用)*/@Testpublic void testFrameSwitch() {try {driver.get("E:/gitHub/study-self/javase/java/src/selenium/html/frame.html");Thread.sleep(1000);//切换到框架2,找到文本框,输入“frame2”,首次运行,焦点默认在主文档driver.switchTo().frame(1);WebElement textFrame2 = driver.findElement(By.id("text1"));textFrame2.sendKeys("frame2");Thread.sleep(1000);//切换到框架1,找到文本框狂,输入“frame1”//需要先切换到最顶端文档,否则会抛出异常,找不到该框架driver.switchTo().defaultContent();driver.switchTo().frame(0);WebElement textFrame1 = driver.findElement(By.id("text1"));textFrame1.sendKeys("frame1");Thread.sleep(1000);//切换回最顶端文档,找到文本框,输入“main”driver.switchTo().defaultContent();WebElement textMain = driver.findElement(By.id("text1"));textMain.sendKeys("main");} catch (InterruptedException e) {e.printStackTrace();} finally {driver.close();}}/*** 7、js框操作 -----警告框(alert),确认框(confirm),提示框(prompt)*/@Testpublic void testJsAlert() {try {driver.get("file:///E:/gitHub/study-self/javase/java/src/selenium/html/jsAlert.html");Thread.sleep(1000);driver.findElement(By.id("button1")).click();Thread.sleep(1000);Alert alert = driver.switchTo().alert();//alert.sendKeys("zml");              //提示框(prompt)System.out.println(alert.getText());//alert.accept(); //确定alert.dismiss();} catch (Exception e) {e.printStackTrace();} finally {//driver.close();}}/*** 8、隐式等待 implicitly Wait* 查找元素隐式等待:调用driver.manage().timeouts().implicitlyWait(long time, java.util.concurrent.TimeUnit unit)* time:等待的时间长度*          unit:等待的时间单位,例如秒*/@Testpublic void testImplicitWait() {//设置隐式查找元素的等待时间是5秒driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);driver.get("http://www.cnblogs.com");//计算查找博客园首页“找找看”链接元素的时间Date startTime1 = new Date();driver.findElement(By.linkText("找找看"));Date endTime1 = new Date();long diff1 = endTime1.getTime() - startTime1.getTime();System.out.println("找到连接元素‘找找看’所用的时间是:" + diff1 + "毫秒");//故意让driver去查找一个不存在的元素aaa,看看它抛出异常的时间是否跟我们设置的5秒一样Date startTime2 = new Date();try {driver.findElement(By.id("aaa"));} catch (Exception e) {Date endTime2 = new Date();long diff2 = endTime2.getTime() - startTime2.getTime();System.out.println("抛出异常的时间间隔:" + diff2);}}/*** 9、显式等待 explicitly Wait*/@Testpublic void testExplicitWait() {try {//driver.get("http://www.cnblogs.com");driver.get("file:///E:/gitHub/study-self/javase/java/src/selenium/html/wait.html");//定义超时4秒,默认每500毫秒轮询一次WebDriverWait wait = new WebDriverWait(driver, 4);//重新定义轮询时间,每隔1秒轮询一次wait.pollingEvery(1000, TimeUnit.MILLISECONDS);//忽略NoSuchElementException异常wait.ignoring(NoSuchElementException.class);//等待直到标题包含博客园//wait.until(ExpectedConditions.titleContains("博客园"));//等待直到元素可点击//wait.until(ExpectedConditions.elementToBeClickable(By.linkText("找找看")));//等待直到url包含cnblogs.com//wait.until(ExpectedConditions.urlContains("cnblogs.com"));// visibilityOfElementLocated 用于检查某个元素是否出现在页面的DOM上并且可见的期望。可见性意味着不仅显示元素,而且元素的高度和宽度也大于0wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("inputID"))).sendKeys("hello,selenium");//等待4秒,每隔1秒定位一次,直至超时或返回要找的元素/* WebElement ele = wait.until(arg0 -> {return arg0.findElement(By.linkText("找找看"));});ele.click();*/} catch (Exception e) {System.out.println("查找元素超时");}}/*** 10、Cookie操作* 1、用户名+密码+拖动滑块 登录* 2、登录* 3、获取cookie* 4、页面跳转*/@Testpublic void testCookie() {try {driver.get("https://shanxi/login");Thread.sleep(2000);clickOnHideButton(driver.findElement(By.id("login-btn")));Thread.sleep(1000);WebElement block = driver.findElement(By.xpath("//*[@id=\"dxDrag\"]/div[2]"));block.click();WebElement source = driver.findElement(By.xpath("//*[@id=\"dxDrag\"]/div[3]"));for (int i = 0; i < 5; i++) {move(driver, source);String text = block.getText();System.out.println("滑动结果:" + text);if ("验证通过".equals(text)) {driver.findElement(By.xpath("//*[@id=\"nsrsbh\"]")).sendKeys("xxx");driver.findElement(By.xpath("//*[@id=\"mm\"]")).sendKeys("ppp");driver.findElement(By.xpath("//*[@id=\"dwnsrForm\"]/div/div[7]/button")).click();System.out.println("登录成功");clickOnHideButton(driver.findElement(By.xpath("//*[@id=\"top\"]/div[1]/ul/li[3]/a")));Thread.sleep(1000);clickOnHideButton(driver.findElement(By.xpath("//*[@id=\"top\"]/div[2]/div[3]/ul/li[3]/a/img")));Thread.sleep(1000);Set<Cookie> cookies = driver.manage().getCookies();StringBuilder sb = new StringBuilder();for (Cookie c : cookies) {System.out.println(c.getName() + " " + c.getValue());sb.append(c.getName() + "=" + c.getValue() + ";");}String cookie = sb.toString();System.out.println("获取的cookie值为:" + cookie);String byForm = HttpRequestGetAndPostUtil.getByForm("https://shanxi/login", cookie);System.out.println(byForm);Map<String, Object> jsonMap = JacksonUtil.jsonToMap(byForm);List<Object> jsonList = CollectionUtil.getList(jsonMap, "message");for (Object o : jsonList) {System.out.println(o);}break;} else {System.out.println("验证码破解失败");continue;}}} catch (Exception e) {System.out.println("查找元素超时" + e.getMessage());}}/*** 11、截图*/@Testpublic void testScreenShot() {// 截图转换为base64/*String base64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);System.out.println(base64);*///截图转换为File格式try {driver.get("https://www.hao123.com/");WebDriverWait webDriverWait = new WebDriverWait(driver, 5);webDriverWait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id=\"search\"]/form/div[3]/input")));File screenshotAs = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);File file = new File("C:/Rrr/temp2");if (!file.exists()) {//file.mkdir();FileHandler.createDir(file);}FileHandler.makeWritable(file);FileHandler.copy(screenshotAs, new File("C:/Rrr/temp2/" + UUID.randomUUID().toString() + ".png"));} catch (IOException e) {e.printStackTrace();}}/*** 12、窗口与导航 window navigate*/@Testpublic void testWindowAndNavigate() {try {// 1.window/*driver.get("http://www.baidu.com");Thread.sleep(2000);//最大化driver.manage().window().maximize();Thread.sleep(2000);//全屏driver.manage().window().fullscreen();Thread.sleep(2000);//打印当前位置,大小System.out.println("当前位置:" + driver.manage().window().getPosition());System.out.println("当前大小:" + driver.manage().window().getSize());//重新设置窗口大小和位置driver.manage().window().setSize(new Dimension(400, 300));Thread.sleep(2000);driver.manage().window().setPosition(new Point(100, 100));driver.quit();*///2、navigatedriver.get("https://blog.csdn.net/");Thread.sleep(1000);driver.findElement(By.xpath("//*[@id=\"nav\"]/div/div/ul/li[11]/a")).click();Thread.sleep(2000);driver.navigate().back();Thread.sleep(2000);try {driver.navigate().to(new URL("http://www.baidu.com"));Thread.sleep(2000);driver.navigate().refresh();} catch (MalformedURLException e) {e.printStackTrace();}} catch (InterruptedException e) {e.printStackTrace();}}/*** 13、执行js*/@Testpublic void excuteJs() {try {driver.get("https://www.csdn.net/");WebElement element = this.driver.findElement(By.xpath("//*[@id=\"nav\"]/div/div/ul/li[11]/a"));JavascriptExecutor jsDriver = (JavascriptExecutor) SeleniumTest.driver;//jsDriver.executeScript("alert(arguments[0])","111","222");//String href = (String) jsDriver.executeScript("return document.getElementsByClassName(\"nav_com\")[0].getElementsByTagName('li')[10].getElementsByTagName('a')[0].getAttribute('href');");String href = (String) jsDriver.executeScript("return arguments[0].getAttribute('href')", element);System.out.println("输出结果 " + href);} catch (Exception e) {e.printStackTrace();}}/*** 移动滑块操作** @param driver* @param source*/public void move(WebDriver driver, WebElement source) {try {Actions action = new Actions(driver);action.clickAndHold(source).moveByOffset((int) (Math.random() * 1000) + 80, 0);//拖动完释放鼠标action.moveToElement(source).release();//组织完这些一系列的步骤,然后开始真实执行操作Action actions = action.build();actions.perform();} catch (ElementNotVisibleException e1) {System.out.println("滑块元素不存在");} catch (Exception e) {System.out.println("超时异常输出");}}/*** 点击被覆盖的元素,防止异常报错** @param element*/public void clickOnHideButton(WebElement element) {JavascriptExecutor driver = (JavascriptExecutor) this.driver;driver.executeScript("arguments[0].click()", element);}
}

 

 

 

 

 

 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. UE4学习笔记 - 初识unreal engine 4

    作为已经使用unity3d一年的半入坑的游戏开发,在看完ue5宣传片后觉得ue太牛了。ue5里面的效果真的震撼狗妈,而且开发者也说了,光线根本不需要烘焙!这是什么概念!我的神船烘焙一个坦克大战全景要将近半小时,但是在那么大的图里根本不需要做这个工作!光线可以随时进行渲染!…...

    2024/4/23 15:06:48
  2. 获取NSString中英文混合下的长度

    无论你怎么转换,怎么变化,用内存的方法来计算字符串,肯定是对的,而且可验证。当你拿到内存指针的那一刻,你就成功了。int getStringLength(NSString* strtemp) {int strlength = 0;const char * pStr = strtemp.UTF8String;if(pStr==NULL)return 0;char *p = (char*)pStr;…...

    2024/4/27 1:12:23
  3. JSON.stringify()和JSON.parse()应用场景

    前言 JSON.stringify():将对象、数组转换成字符串 JSON.parse():将字符串转成json对象 应用场景 1、 a、浏览器创建、获取(sessionStorage、localStorage、cookie)数组内容 b、路由(浏览器地址)传参、获取数组内容 创建、传参的时候使用JSON.stringify() (如果不使用JSON…...

    2024/4/23 15:06:50
  4. 正则表达式就是这么简单(不懂私戳)

    To conclude:onenote真相,不过复制到CSDN为什么图片呢 参考的书是《python程序设计》 一些拓展知识,暂时不接触,感觉上面的也够用了。作业要用。 继续加油!(先吃饭去了 关于元字符、转义字符的一些思考在这里:一文搞懂元字符、转义字符和运算符之间的关系(正则表达式)...

    2024/4/23 15:06:50
  5. Android_Q版本跳过授权弹框自动获取adb的debug模式

    注意:跳过开发者模式获取debug授权功能,只能是在系统级别的apk中获取,install的第三方apk不能使用下列功能!!!在需要跳过开发者模式直接获取adb—debug模式的apk中,设置下列属性值/** *注: 0----关闭 * 1----开启 */ // 开机启动时,默认设置 [未知来源] 勾选android…...

    2024/4/23 15:06:41
  6. SDL2嵌入控件播放导致崩溃,系统锁屏触锁后不刷新

    现象:使用MFC及C#控件进行视频流或录像文件的播放app,问题:1.对控件进行放大缩小后,界面不刷新。2.当对运行APP的系统进行锁屏再解锁后或远程连接或切换用户后,相应的图像控件界面不刷新。-严重方法:问题1:控件缩放刷新问题,SDL_SetWindowPosition函数不起作用,是窗口…...

    2024/4/27 23:54:10
  7. Python之pandas.iloc和pandas.loc使用用法

    引言 pandas.iloc方法提供了基于整数的索引方式,跟 python自身的list 的索引方式是十分类似的!栗子 import numpy as np import pandas as pd np.random.seed(1) # 为了使得生成的随机数固定,这里设置了随机数种子 s1 = pd.Series(np.random.randn(5), index=list(range(…...

    2024/4/23 15:06:46
  8. 摘抄:Wireshark使用入门

    使用教程:https://www.cnblogs.com/cocowool/p/wireshark_tcp_http.html 下载: https://wireshark.en.softonic.com/ 查看:完整的应答:...

    2024/4/28 0:19:03
  9. Kmeans and leetcode

    模式识别作业实现Kmeans 对于二维数据:对于图像:原理比较简单。但是做图像分割时候,每一次运行的结果都不一样,应该是因为K的选择的问题,这就是Kmeans要选择合适的K的原因。因为假设一堆数据是四类的,但是如果取K=2聚类,那么初始的那两个随机点会对结果有很大的影响。(…...

    2024/4/15 8:11:40
  10. ES系列:text和keyword区别与用法

    text:字符串将被拆分indexkeyword:整个字符串作为一个整体index一个字符串可以同时使用两个type:PUT my_index {"mappings": {"properties": {"city": {"type": "text","fields": {"raw": { "t…...

    2024/4/18 7:47:20
  11. python sqlalchemy 针对数据库json的查询 及 Exists

    sqlalchemy 存在功能描述names = ["aaa", "bbb", "hjuhyg",...]session.query(User).filter(User.name.in_(names)) 当数据量很大时,查询速度会很慢,所以想要优化mysql 的 in 查询时,可以使用exists,在 python中,一种方便的方法如下: 可以…...

    2024/4/17 4:29:45
  12. dp+最短路——Mr. Rito Post Office(Aizu - 2200 )

    dp+最短路 ——Mr. Rito Post Office(Aizu - 2200 ) 在一些城市中有水路和陆路连接,每一条路都有长度。但是水路必须乘船,且坐船到达某个位置后船必须留在那里,下次坐必须回到该地。现在有m城市要到达,且必须按照指定的顺序,问最小代价。 Sample Input 3 3 1 2 5 L 1 2 …...

    2024/4/17 4:29:39
  13. 使用webpack打包组件和基础库并发布至npm

    webpack除了打包应用,也可以用来打包js库和一些自定义组件库。单纯只是打包js库和组件库的话 使用rollup打包也是一个不错的选择。我们来实现一个简单的打包例子,这个例子需要满足以下几点功能:需要支持打包压缩版(x.min.js)和非压缩版本(x.js)。支持 AMD/CJS/ESM 模块引入。…...

    2024/4/19 10:44:42
  14. RxJava 四:RxJava 3 操作符(Operators)

    操作符(Operators)的实质是函数式编程中的高阶函数,是对响应式编程的各个过程拆分封装后的产物。目的在于灵活操作数据流。...

    2024/4/17 4:30:09
  15. es 聚合查询的报illegal_argument_exception错误

    es对没有加入索引的是不支持聚合查询的,如果需要聚合查询执行下面的语句curl -X PUT "localhost:9200/megacorp/_mapping?pretty" -H Content-Type:application/json -d { "properties":{ "interests":{ "type":"text", …...

    2024/4/17 4:30:15
  16. 运维大法之Linux系统引导过程及引导修复

    1.通电 2.bios初始化 对硬件检测 初始化硬件时钟 3.磁盘引导 mbr=主引导记录=0磁道1扇区446 作用: 记录grub2引导文件的位置 当mbr数据丢失系统会因为找不到启动分区而停止启动 问题模拟方式: #系统磁盘/dev/sda dd if=/dev/zero of=/dev/sda bs=446 count=1 #清空系统/dev/s…...

    2024/4/23 15:06:46
  17. Qt 添加Q_OBJECT宏报错

    例如class Chip : public QGraphicsItem 改为class Chip : public QGraphicsObject 并添加Q_OBJECT时会编译报错 此时需要在项目栏选择“重新构建”,因为涉及到moc源对象变化时,往往需要重新构建 ,这样就可以编译通过了...

    2024/4/23 15:06:37
  18. 雷达原理笔记之目标RCS

    雷达原理笔记之目标RCS ——南京理工大学许志勇老师的《雷达原理课程》浅析 文章目录雷达原理笔记之目标RCS1.RCS基本知识点1.1定义1.2RCS与电磁波波长关系2.RCS与波长的特性对雷达设计的指导意义雷达通过接收目标的反射电磁波实现对目标的探测。因此对目标反射电磁波特性的研究…...

    2024/4/23 15:06:44
  19. 我的一次博客

    我的第一篇博客我的第一天 我想以后都要坚持写博客,来记录我的成长以及在当中获得成长。 我是一名在校大学生,专业就读计算机科学与技术,我现在大二了,现在还没去学校,再过两个月我就大三了。记得刚高考完时候,我对大学生活充满 了希望,总是憧憬着以后自己大学要怎么学,…...

    2024/4/23 15:06:35
  20. 性能优化专题(一)Linux性能维度排查

    目录1. 性能优化是什么?2. 性能的个唯度3. 术语4. CPU占用过高排查现象重现定位方法5. Memory内存查看6. IO读写查看7. Network网络1. 性能优化是什么?性能优化就是发挥机器本来的性能2. 性能的个唯度CPUMemoryIOnetwork 网络 3. 术语吞吐量:对单位时间内完成的工作量的度量…...

    2024/4/23 15:06:34

最新文章

  1. 基于车载点云数据的城市道路特征目标提取与三维重构

    作者&#xff1a;邓宇彤&#xff0c;李峰&#xff0c;周思齐等 来源&#xff1a;《北京工业大学学报》 编辑&#xff1a;东岸因为一点人工一点智能公众号 基于车载点云数据的城市道路特征目标提取与三维重构本研究旨在弥补现有研究在处理复杂环境和大数据量上的不足&#xf…...

    2024/4/28 1:14:45
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 【UE5 C++】各个头文件的含义

    #pragma once 预处理程序指令 作用&#xff1a;保护同一个文件不会被多次包含&#xff0c;使得头文件只会被编译一次&#xff0c; #include “CoreMinimal.h” 包含了一套来自UE4的核心编程环境的普遍存在类型 #include “GameFramework/GameModeBase.h” 基于GameModeBas…...

    2024/4/21 20:36:50
  4. 第十二届蓝桥杯省赛真题(C/C++大学B组)

    目录 #A 空间 #B 卡片 #C 直线 #D 货物摆放 #E 路径 #F 时间显示 #G 砝码称重 #H 杨辉三角形 #I 双向排序 #J 括号序列 #A 空间 #include <bits/stdc.h> using namespace std;int main() {cout<<256 * 1024 * 1024 / 4<<endl;return 0; } #B 卡片…...

    2024/4/28 0:30:06
  5. JRT高效率开发

    得益于前期的基础投入&#xff0c;借助代码生成的加持&#xff0c;本来计划用一周实现质控物维护界面&#xff0c;实际用来四小时左右完成质控物维护主体&#xff0c;效率大大超过预期。 JRT从设计之初就是为了证明Spring打包模式不适合软件服务模式&#xff0c;觉得Spring打包…...

    2024/4/26 22:07:51
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/26 21:56:58
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/26 22:01:59
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57