交易 网站备案,微信小程序麻将辅助免费,免费ppt模板 网站开发,阿里云云主机做网站1.概述 在本教程中#xff0c;我们将探讨如何将Selenium与Java结合使用。 我们将使用Selenium打开Google#xff0c;进行搜索#xff0c;然后单击URL。 该代码在Github上可用。 2.什么是硒#xff1f; Selenium使Web浏览器自动化。 就是这样 Selenium使我们能够模拟… 1.概述 在本教程中我们将探讨如何将Selenium与Java结合使用。 我们将使用Selenium打开Google进行搜索然后单击URL。 该代码在Github上可用。 2.什么是硒 Selenium使Web浏览器自动化。 就是这样 Selenium使我们能够模拟用户与网页的交互。 我们可以使用两种Selenium产品Selenium WebDriver和Selenium IDE。 我们将使用WebDriver。 什么是WebDriver WebDriver是官方的W3C规范从本质上讲它是与Web浏览器进行交互的一种方式。 以前使用Selenium RCSelenium可以通过注入JavaScript与元素进行交互来与浏览器一起运行。 随着WebDriver规范的采用诸如GoogleMozilla和Microsoft之类的公司发布了具有受Selenium可以利用的钩子控制的功能的浏览器。 这个钩子使Selenium可以像人类一样与Web浏览器进行交互。 我们将使用Google Chrome因此需要下载chromedriver 。 下载驱动程序后我们需要执行文件。 在Mac上我们可以简单地执行以下操作 ./chromedriver3. pom.xml 我使用Spring Tool Suite并创建了一个新的Spring Starter项目这不是必需的但我倾向于喜欢Spring。 所以Selenium实际上是由Spring Boot Starter Parent管理的。 版本是2.53.1。 !-- typical pom beginning--parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion1.5.10.RELEASE/versionrelativePath / !-- lookup parent from repository --/parentpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version1.8/java.version/propertiesdependenciesdependencygroupIdcom.h2database/groupIdartifactIdh2/artifactIdscoperuntime/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.seleniumhq.selenium/groupIdartifactIdselenium-java/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build
!-- typical pom ending--4.打开Chrome和搜索 对于此步骤我们将建立与chromedriver的连接打开浏览器并搜索“ Selenium”。 我们将localhost作为目标端口因为chromedriver在本地服务器的端口9515上运行。 RemoteWebDriver实现了WebDriver WebDriver的目标是提供一个面向对象的API该API为现代高级Web应用程序测试问题提供支持。 因此基于这些事实我们可以说RemoteWebDriver是允许使用远程浏览器的实现。 好处包括将测试的运行位置与浏览器所在的位置分开以及使用当前操作系统上不可用的浏览器进行测试的能力。 缺点包括以下事实我们需要一个外部servlet容器来运行并且如果引发异常则可能会有延迟。 // create a Chrome Web DriverURL local new URL(http://localhost:9515);WebDriver driver new RemoteWebDriver(local, DesiredCapabilities.chrome());// open the browser and go to open google.comdriver.get(https://www.google.com); driver.findElement(By.id(lst-ib)).sendKeys(Selenium);driver.findElement(By.name(btnK)).click();driver.manage().window().maximize();5.获取页面并单击 WebDriver为我们提供了findElement和findElements方法来在网页上定位元素。 这些方法接受By对象作为参数。 By具有借助定位符值在文档中定位元素的方法。 Selenium已经很好地记录了他们的API 。 一旦我们了解了如何使用Selenium来标识元素就可以轻松阅读任何driver.findElementsBy…方法。 但是我们也需要知道如何编写它们。 使用Chrome之类的浏览器我们可以右键单击或等效按钮以检查元素以获取其HTML / CSS信息。 另外我们也可以“查看源代码”以获取更多完整信息。 为了演示如何在网页上滚动我们执行jse.executeScript“ window.scrollBy0,250”“” 。 顾名思义 JavaScriptExecutor执行JavaScript。 JavaScriptExecutor是通过Selenium WebDriver提供的接口。 它提供了两种方法“ executescript”和“ executeAsyncScript”以在所选窗口或当前页面上运行javascript。 使用下面的代码可以创建一个更全面的漫游器来搜索Google并单击几个页面的URL。 // get the number of pagesint size driver.findElements(By.cssSelector([valigntop] td)).size();for(int j 1 ; j size ; j) {if (j 1) {// we dont need to navigate to the first pagedriver.findElement(By.cssSelector([aria-labelPage j ])).click(); // navigate to page number j}String pagesearch driver.getCurrentUrl();ListWebElement findElements driver.findElements(By.xpath(//*[idrso]//h3/a));System.out.println(findElements.size());for(int i0;ifindElements.size();i){findElements driver.findElements(By.xpath(//*[idrso]//h3/a)); findElements.get(i).click(); driver.navigate().to(pagesearch);JavascriptExecutor jse (JavascriptExecutor) driver;//Scroll vertically downward by 250 pixelsjse.executeScript(window.scrollBy(0,250), );}}六结论 这是Java Selenium的基本介绍。 正如我们发现的那样在Selenium Webdriver中定位器如XPathCSS等用于标识和执行Web页面上的操作。 也可以执行任意JavaScript。 完整的代码可以在Github上找到。 翻译自: https://www.javacodegeeks.com/2018/02/selenium-java-google-search.html