Java最高

从Spring 5和Spring Boot 2开始学习的春天课程:

>>看看课程

1.介绍

在这个简短的教程中,我们将看一个简单的例子,如何点击和元素WebDriver使用JavaScript。

在演示中,我们将使用JUnit和硒打开https://金宝搏188体育baeldung.com并搜索“Selenium”文章。

2.依赖关系

首先,我们添加selenium-javajunit项目的依赖项pom.xml

<依赖> < groupId > org.seleniumhq。 selenium-java 3.141.59   junit junit 4.13 test 

3.配置

接下来,我们需要配置WebDriver。在这个例子中,我们将使用它的Chrome实现:

@Before public void setUp() {System.setProperty("webdriver.chrome. ");司机”,新文件(src /主/资源/ chromedriver.mac) .getAbsolutePath ());driver = new ChromeDriver();}

我们使用带注释的方法@Before在每次测试前进行初始设置。我们在里面设置webdriver.chrome.driver属性定义chrome的司机的位置。在那之后,我们实例化WebDriver对象。

当测试结束时,我们应该关闭浏览器窗口。我们可以通过放置driver.close ()注释的方法中的语句@After.这确保了即使测试失败它也会被执行:

@After public void cleanUp() {driver.close();}

4.打开浏览器

现在,我们可以创建一个测试用例这将做我们的第一步-打开网站:

@Test public void whenSearchForSeleniumArticles_thenReturnNotEmptyResults() {driver.get("https://b金宝搏188体育aeldung.com");String title = driver.getTitle();assertEquals(“金宝搏188体育Baeldung | Java, Spring和Web开发教程”,标题);}

这里,我们用thedriver.get ()方法来加载网页。接下来,我们验证它的标题,以确保我们在正确的位置。

5.使用JavaScript点击一个元素

硒是随手可得的WebElement #点击方法调用给定元素上的单击事件。但在某些情况下,点击操作是不可能的。

一个例子是,如果我们想要单击一个禁用的元素。在这种情况下,WebElement #点击抛出一个IllegalStateException.相反,我们可以使用Selenium的JavaScript支持。

要做到这一点,我们首先需要的是JavascriptExecutor.因为我们用的是ChromeDriver实现时,我们可以简单地将它转换为我们需要的类型:

JavascriptExecutor executor = (JavascriptExecutor)驱动;

得到许可后JavascriptExecutor,我们可以用itsexecuteScript方法。参数是脚本本身和脚本参数数组。在我们的例子中,我们在第一个参数上调用click方法:

executor.executeScript(“参数[0].click(); ",元素);

现在,让我们把它放在一个单独的方法中,我们将调用clickElement

private void clickElement(weelement element) {JavascriptExecutor executor = (JavascriptExecutor)驱动;executor.executeScript(“参数[0].click(); ",元素);}

最后,我们可以将这个添加到我们的测试中:

@Test public void whenSearchForSeleniumArticles_thenReturnNotEmptyResults(){//…load https://金宝搏188体育baeldung.com WebElement searchButton = driver.findElement(By.className("nav——menu_item_anchor"));clickElement (searchButton);WebElement searchchinput = driver.findElement(By.id("搜索"));searchInput.sendKeys(“硒”);WebElement seeSearchResultsButton = driver.findElement(By.cssSelector(".btn-search"));clickElement (seeSearchResultsButton);}

6.不能点击的元素

在使用JavaScript单击元素时,最常见的问题之一是在可单击元素之前执行单击脚本。在这种情况下,不会发生单击操作,但代码将继续执行。

为了克服这个问题,我们必须在点击可用时才执行。我们可以使用WebDriverWait #直到等待按钮被呈现。

首先,WebDriverWait对象需要两个参数;司机和暂停:

WebDriverWait = new WebDriverWait(driver, 5000);

然后,我们调用直到,给予预期的elementToBeClickable条件:

wait.until (ExpectedConditions.elementToBeClickable (By.className(“导航——menu_item_anchor”)));

一旦它成功返回,我们就可以继续了:

WebElement searchButton = driver.findElement(By.className("nav——menu_item_anchor"));clickElement (searchButton);

有关更多可用的条件方法,请参阅官方文档

7.结论

在本教程中,我们学习了如何使用JavaScript点击Selenium中的元素。与往常一样,本文的源代码是可用的在GitHub

Java底部

从Spring 5和Spring Boot 2开始学习的春天课程:

>>看看课程
这篇文章的评论已经关闭!