提交 c1c4f675 编写于 作者: W wizardforcel

2020-06-24 14:37:39

上级 40449b06
......@@ -61,7 +61,7 @@ import org.openqa.selenium.support.ui.Select;
Select languages = new Select(driver.findElement(By.id("element_ID")));
```
可以使用前面讨论的任何定位策略(https://javabeginnerstutorial.com/selenium/9j-webdriver-locating-elements-1/)来定位下拉列表。
可以使用前面讨论的任何定位策略(<https://javabeginnerstutorial.com/selenium/9j-webdriver-locating-elements-1/>)来定位下拉列表。
**步骤 3**:找到下拉 Web 元素并创建`Select`类的对象后,就可以访问其所有方法来执行选择和取消选择。
......@@ -81,7 +81,7 @@ Select languages = new Select(driver.findElement(By.id("element_ID")));
### 1\. `selectByVisibleText(String arg0)`和`deselectByVisibleText(String arg0)`
这些方法选择和取消选择一个显示的文本与传递的 String 参数完全匹配的选项。
这些方法选择和取消选择一个显示的文本与传递的`String`参数完全匹配的选项。
**语法**`selectObject.selectByVisibleText("displayed_option_text")`
......@@ -106,17 +106,17 @@ languages.selectByVisibleText("JavaScript");
languages.deselectByVisibleText("JavaScript");
```
### 2\. selectByValue(String arg0)和 deselectByValue(String arg0)
### 2\. `selectByValue(String arg0)`和`deselectByValue(String arg0_`
这些方法选择和取消选择其 value 属性与传递的 String 参数匹配的选项。
这些方法选择和取消选择其`value`属性与传递的`String`参数匹配的选项。
**语法**`selectObject.selectByValue("value_attribute_text")`
`selectObject.deselectByValue("value_attribute_text")`
**示例**:让我们从 Selenium Tool Suite 多选选项中选择“Selenium RC”。
**示例**:让我们从 Selenium 工具套件多选选项中选择“Selenium RC”。
右键单击所需的 Web 元素,然后选择 inspect 元素,将给出相应的 HTML 代码,如下所示,
右键单击所需的 Web 元素,然后选择检视元素,将给出相应的 HTML 代码,如下所示,
```java
<select id="selenium_suite" multiple="multiple" name="selenium_suite">
......@@ -125,7 +125,7 @@ languages.deselectByVisibleText("JavaScript");
<option value="RC">Selenium RC</option>
```
“值”属性的值“RC”将作为参数传递给 selectByValue 方法。
`value`属性的值“`RC`”将作为参数传递给`selectByValue`方法。
*Code:*
......@@ -133,15 +133,15 @@ languages.deselectByVisibleText("JavaScript");
multiSelect.selectByValue("RC");
```
### 3\. selectByIndex(int arg0)和 deselectByIndex(int arg0)
### 3\. `selectByIndex(int arg0)`和`deselectByIndex(int arg0)`
这些方法选择和取消选择指定索引值处的选项。 重要的是要注意,索引值始终以零开头。
**语法**selectObject.selectByIndex(“option_index”);*
**语法**`selectObject.selectByIndex("option_index");`
*selectObject.deselectByIndex(“option_index”);*
`selectObject.deselectByIndex("option_index");`
**示例*** 让我们从 Selenium Tool Suite 多选选项中取消选择“Selenium RC”。
**示例**让我们从 Selenium 工具腰间多选选项中取消选择“Selenium RC”。
基于 HTML 代码,Selenium IDE 的索引为 0,Selenium WebDriver 的索引为 1,Selenium RC 的索引为 2。
......@@ -151,7 +151,7 @@ multiSelect.selectByValue("RC");
multiSelect.deselectByIndex(2);
```
### 4\. deselectAll()
### 4\. `deselectAll()`
此方法清除选择。 没有传递参数。
......@@ -161,7 +161,7 @@ multiSelect.deselectByIndex(2);
**语法**`selectObject.deselectAll()`
**示例**:让我们取消选择在 Selenium Tool Suite 多重选择框中选择的所有选项。
**示例**:让我们取消选择在 Selenium 工具套件多重选择框中选择的所有选项。
*Code:*
......@@ -169,13 +169,13 @@ multiSelect.deselectByIndex(2);
multiSelect.deselectAll();
```
### 5\. isMultiple()
### 5\. `isMultiple()`
当您想知道 Web 元素是否允许多选时,此方法很方便。 它返回 true 或 false。 没有传递参数。
当您想知道 Web 元素是否允许多选时,此方法很方便。 它返回`true``false`。 没有传递参数。
**语法**`selectObject.isMultiple()`
### 6\. getOptions()
### 6\. `getOptions()`
此方法作为 Web 元素返回在多重选择框中可用的所有选项的列表。
......@@ -187,7 +187,7 @@ multiSelect.deselectAll();
List<WebElement> allOptions = multiSelect.getOptions();
```
### 7\. getFirstSelectedOption()
### 7\. `getFirstSelectedOption()`
此方法在多重选择框中返回第一个选定的选项。 如果在仅允许单个选择的下拉菜单中使用此选项,则将所选选项作为 Web 元素返回。
......@@ -195,7 +195,7 @@ List<WebElement> allOptions = multiSelect.getOptions();
这将返回所选的选项文本。
### 8\. getAllSelectedOptions()
### 8\. `getAllSelectedOptions()`
此方法返回作为多选框的一部分而被选择为 Web 元素的所有选项的列表。
......@@ -216,12 +216,12 @@ List<WebElement> allSelectedOptions = multiSelect.getAllSelectedOptions();
1. 打开 Firefox 浏览器
2. 导航到[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)
3. 使用 ID 找到“编程语言”下拉菜单
4. Select 类创建一个对象
4.`Select`类创建一个对象
5. 通过可见的文本选择“JavaScript”语言
6. 将选定的选项打印到控制台
7. 检查“编程语言”下拉列表是否支持多项选择并将相应消息打印到控制台
8. 使用名称找到“Selenium Tool Suite”多选框
9. 使用多选 Web 元素创建 Select 类的实例
9. 使用多选 Web 元素创建`Select`类的实例
10. 根据其值选择“Selenium RC”和“优势”
11. 通过索引取消选择“Selenium RC”
12. 通过可见的文本选择“Selenium WebDriver”
......
......@@ -12,7 +12,7 @@
**例如**
让我们尝试访问嵌套表的第一行,并将文本“Inner Row 1”打印到控制台。 由于我们不在这里使用 XPath,因此它将变得有些复杂。 但是一旦您掌握了如何以一个嵌套级别定位一个单元,然后访问更深层次的单元就轻松了! 第一步是使用标签名称“table”查找主表。 可以使用任何定位策略,但通常表的行和列没有 ID 或名称。 因此,访问它们的最佳方法是使用它们相应的标签名称。 第二步是使用获得的 Web 元素(表),找到嵌套表。 最后一步是,使用嵌套表 web 元素,找到第一行并获取其文本!
让我们尝试访问嵌套表的第一行,并将文本“`Inner Row 1`”打印到控制台。 由于我们不在这里使用 XPath,因此它将变得有些复杂。 但是一旦您掌握了如何以一个嵌套级别定位一个单元,然后访问更深层次的单元就轻松了! 第一步是使用标签名称“`table`”查找主表。 可以使用任何定位策略,但通常表的行和列没有 ID 或名称。 因此,访问它们的最佳方法是使用它们相应的标签名称。 第二步是使用获得的 Web 元素(表),找到嵌套表。 最后一步是,使用嵌套表 web 元素,找到第一行并获取其文本!
右键单击所需元素,然后选择检查元素,将给出相应的 HTML 代码段,如下所示,
......@@ -46,7 +46,7 @@ System.out.println("Inner table first row text = " + innerRow1.getText());
## 方法 2:使用 XPath 处理表
第一种方法需要使用三个 Web 元素来访问所需的单元格。 如果涉及许多嵌套级别,则用于定位元素的命令数量将增加。 为了减轻这种情况,我们有 XPath 可以拯救我们! “XPath”一词会响起吗? 如果不是这样,请参考 XPath 的[定位元素以简单的方式构造它](https://javabeginnerstutorial.com/selenium/9n-webdriver-locating-elements-4a/)
第一种方法需要使用三个 Web 元素来访问所需的单元格。 如果涉及许多嵌套级别,则用于定位元素的命令数量将增加。 为了减轻这种情况,我们有 XPath 可以拯救我们! “XPath”一词会响起吗? 如果不是这样,请参考 XPath 的[定位元素以简单的方式构造它](https://javabeginnerstutorial.com/selenium/9n-webdriver-locating-elements-4a/)
**例如**
......@@ -70,9 +70,9 @@ WebElement innerRow2 = driver.findElement(By.xpath("//table/tbody/tr[1]/td[2]/ta
3. 使用标签名称找到“练习表格”
4. 使用标签名称找到嵌套表
5. 使用标签名称找到嵌套表的第一行
6. 打印文本“Inner Row 1”进行控制台
6. 打印文本“`Inner Row 1`”进行控制台
7. 使用 XPath 找到嵌套表的第二行
8. 打印文本“Inner Row 2”进行控制台
8. 打印文本“`Inner Row 2`”进行控制台
此方案的 JUnit 代码是,
......
......@@ -6,7 +6,7 @@
## 步骤 1:
使用其 ID “`BooksAuthorsTable`”找到“图书&作者” 表。 HTML 代码如下:
使用其 ID “`BooksAuthorsTable`”找到“图书&作者”表。 HTML 代码如下:
```java
<table id="BooksAuthorsTable" class="table table-bordered">
......@@ -22,7 +22,7 @@ WebElement BooksTable = driver.findElement(By.id("BooksAuthorsTable"));
**使用 XPath 计算行和列的总数**
让我们使用绝对 XPath 查找总行数。 请注意,XPath 以标签名称“tr”结尾。 size()方法给出使用 XPath 由 findElements()返回的元素数。
让我们使用绝对 XPath 查找总行数。 请注意,XPath 以标签名称“`tr`”结尾。 `size()`方法给出使用 XPath 由`findElements()`返回的元素数。
*Code:*
......@@ -44,7 +44,7 @@ int colNum = driver.findElements(By.xpath("//table[@id='BooksAuthorsTable']/tbod
**遍历表元素**
如果表的行和列号固定为,那么遍历每个表元素将变得非常容易。 可以使用两个 for()循环,一个用于行,另一个用于访问列值。
如果表的行和列号固定为,那么遍历每个表元素将变得非常容易。 可以使用两个`for()`循环,一个用于行,另一个用于访问列值。
*Code:*
......@@ -60,19 +60,19 @@ xpath("//table[@id='BooksAuthorsTable']/tbody/tr[" + i +"]/td[" + j + "]")).getT
有一天,如果幸运的话,您可能会偶然发现一个表,该表在每次页面刷新时都会动态加载,因此行数通常会有所不同。 因此,每执行一次测试便要计算行数。
首先,让我们获取所有标签名称为“tr”的元素,并将它们放在名为“rowVals”的列表中。
首先,让我们获取所有标签名称为“”的元素,并将它们放在名为“`rowVals`”的列表中。
```java
List<WebElement> rowVals = BooksTable.findElements(By.tagName("tr"));
```
要从第一行获取标头元素,请找到所有标签名称为“th”的元素,并将其放在名为“colHeader”的列表中。
要从第一行获取标头元素,请找到所有标签名称为“`th`”的元素,并将其放在名为“`colHeader`”的列表中。
```java
List<WebElement> colHeader = rowVals.get(0).findElements(By.tagName("th"));
```
要将每个标题文本打印到控制台,请遍历 colHeader 列表中的标题值并使用 getText()方法。
要将每个标题文本打印到控制台,请遍历`colHeader`列表中的标题值并使用`getText()`方法。
```java
for(int i=0; i<colHeader.size(); i++){
......@@ -80,7 +80,7 @@ System.out.println(colHeader.get(i).getText());
}
```
要将表内容打印到控制台,请遍历每一行。 对于每一行,遍历每一列,并使用相同的 getText()方法打印值。
要将表内容打印到控制台,请遍历每一行。 对于每一行,遍历每一列,并使用相同的`getText()`方法打印值。
```java
for(int i=1; i<rowNum; i++){
......@@ -105,8 +105,8 @@ for(int j=0; j<colNum; j++){
4. 使用绝对 XPath 获取总行数
5. 使用相对 XPath 获取总列数
6. 将行数和列数打印到控制台
7. 通过标签名称“tr”获取所有行值
8. 通过标签名称“th”获取列表中的列标题值
7. 通过标签名称“`tr`”获取所有行值
8. 通过标签名称“`th`”获取列表中的列标题值
9. 循环浏览标题值并将其打印到控制台
10. 遍历表内容(每一行的所有列)并获取其文本
11. 将值打印到控制台
......
......@@ -2,7 +2,7 @@
> 原文: [https://javabeginnerstutorial.com/selenium/9x-webdriver-handling-alerts-popup-box/](https://javabeginnerstutorial.com/selenium/9x-webdriver-handling-alerts-popup-box/)
嗨呀爱好者! 想知道为什么 Selenium WebDriver 中存在 Alert 界面? 好吧,我的朋友,对于您所寻找的信息,仅此帖子即可。 我们将讨论基本上属于三种类型的弹出框-警报框,确认框和提示框。 与往常一样,我们有[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)来说明这些概念。
嗨呀爱好者! 想知道为什么 Selenium WebDriver 中存在警报界面? 好吧,我的朋友,对于您所寻找的信息,仅此帖子即可。 我们将讨论基本上属于三种类型的弹出框-警报框,确认框和提示框。 与往常一样,我们有[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)来说明这些概念。
**注意:**
......@@ -22,7 +22,7 @@ window.alert("This is a simple alert box! \nYou can't escape from me until you c
## 2\. **确认框**
确认框为用户提供了两个选项,以验证/接受或关闭某些内容。 用户必须单击“确定”或“取消”才能继续。 确认弹出框返回布尔值。 当用户点击“确定”时返回 true,而当点击“取消”时返回 false
确认框为用户提供了两个选项,以验证/接受或关闭某些内容。 用户必须单击“确定”或“取消”才能继续。 确认弹出框返回布尔值。 当用户点击“确定”时返回`true`,而当点击“取消”时返回`false`
JavaScript code:
......
......@@ -6,7 +6,7 @@
每当实例化一个新的 WebDriver 对象时,就会向每个打开的唯一窗口分配一个唯一的字母数字 ID。 这个独特的 ID 被称为“窗口句柄”- 这是 *Selenium Ville* 拥挤的街道上的另一个新名词。 因此,使用这些唯一的 ID,我们可以轻松地在窗口之间切换控件并执行所需的活动。
1.字符串 getWindowHandle()
1\. `String getWindowHandle()`
此方法用于获取当前窗口的窗口句柄。
......@@ -17,9 +17,9 @@
String parentWinHandle = driver.getWindowHandle();
```
2.设置<字符串> getWindowHandles()
2\. `Set<String> getWindowHandles()`
此方法用于获取 Set 中所有打开的窗口的窗口句柄。
此方法用于获取`Set`中所有打开的窗口的窗口句柄。
*语法*
......@@ -28,8 +28,8 @@ String parentWinHandle = driver.getWindowHandle();
Set<String> winHandles = driver.getWindowHandles();
```
可以使用分配给每个打开的窗口的唯一句柄的引用,使用相同的 switchTo()方法从一个窗口切换到另一窗口。 为了更好地了解 switchTo(),请单击此处的[](https://javabeginnerstutorial.com/selenium/9x-webdriver-handling-alerts-popup-box/)
可以使用分配给每个打开的窗口的唯一句柄的引用,使用相同的`switchTo()`方法从一个窗口切换到另一窗口。 为了更好地了解`switchTo()`[请单击此处](https://javabeginnerstutorial.com/selenium/9x-webdriver-handling-alerts-popup-box/)
## 场景
让我们看一个实现这些方法的测试案例,以更深入地了解这些概念,
......@@ -126,7 +126,7 @@ driver.getTitle());
代码是不言自明的,因为同时提供了注释。
Eclipse IDE 中-> JUnit 窗格->绿色条显示测试用例已成功执行。 控制台窗口显示没有任何错误。 它还按预期显示所有打印的消息。
“Eclipse IDE 中 -> JUnit 窗格 -> 绿色条”显示测试用例已成功执行。 控制台窗口显示没有任何错误。 它还按预期显示所有打印的消息。
![multiple windows eclipse output](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20819%20391'%3E%3C/svg%3E)
......
......@@ -97,8 +97,6 @@ public class WindowMaximize {
清晰的注释使代码不言自明。
在 Eclipse IDE 中-> JUnit 窗格->绿色条显示测试用例已成功执行。 控制台窗口显示没有任何错误。 它还按预期显示所有打印的消息。
![](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20819%20391'%3E%3C/svg%3E)
在“Eclipse IDE 中 -> JUnit 窗格 -> 绿色条”显示测试用例已成功执行。 控制台窗口显示没有任何错误。 它还按预期显示所有打印的消息。
<noscript><img alt="" class="alignnone size-full wp-image-12549" height="391" src="img/8747d9f868b65e6dad7be604914dd691.png" width="819"/><p>如有任何疑问,请不要在评论部分大喊大叫!</p><p>我很快会在另一篇文章中再见。 祝你有美好的一天!</p><div class="sticky-nav" style="font-size: 15px;"><div class="sticky-nav-image"></div><div class="sticky-nav-holder"><div class="sticky-nav_item"><h6 class="heading-sm">下一篇文章</h6></div><h5 class="sticky-nav_heading " style="font-size: 15px;"><a href="https://javabeginnerstutorial.com/selenium/9aa-webdriver-executing-javascript-code/" title="9aa. WebDriver – Executing JavaScript code"> 9aa。 WebDriver – 执行 JavaScript 代码</a></h5></div></div> </body> </html></noscript>
\ No newline at end of file
......@@ -2,27 +2,27 @@
> 原文: [https://javabeginnerstutorial.com/selenium/9bb-webdriver-actions-class/](https://javabeginnerstutorial.com/selenium/9bb-webdriver-actions-class/)
灯光,摄像头,动作! 是的,今天所有有关动作的内容。 哦,我不是在谈论您在电影中观看的那些战斗顺序,而是在谈论键盘和鼠标的动作。 Selenium WebDriver 提供了一个面向用户的 API,用于执行复杂的用户手势。 我们到处都希望自动化! 因此,除了直接使用键盘和鼠标,我们还可以使用 Actions 类来执行基本的`click``sendKeys`和复杂的操作,例如`dragAndDrop`等。
灯光,摄像头,动作! 是的,今天所有有关动作的内容。 哦,我不是在谈论您在电影中观看的那些战斗顺序,而是在谈论键盘和鼠标的动作。 Selenium WebDriver 提供了一个面向用户的 API,用于执行复杂的用户手势。 我们到处都希望自动化! 因此,除了直接使用键盘和鼠标,我们还可以使用`Actions`类来执行基本的`click``sendKeys`和复杂的操作,例如`dragAndDrop`等。
## 一些可用的键盘和鼠标方法是,
### 1.单击(WebElement 目标)
### 1\. `click(WebElement target)`
参数:`target` – 要单击的元素。
说明:单击给定目标的中间。
### 2\. clickAndHold()
### 2\.` clickAndHold()`
说明:单击当前鼠标位置不会释放。
### 3\. doubleClick(WebElement 目标)
### 3\. `doubleClick(WebElement target)`
参数:`target` – 要点击的元素。
说明:在给定目标元素的中间双击。 等效于:`Actions.moveToElement(element).doubleClick();`
### 4\. dragAndDrop(WebElement 源,WebElement 目标)
### 4\. `dragAndDrop(WebElement src, WebElement dest)`
参数:
......@@ -32,7 +32,7 @@
说明:在源元素的位置单击并按住,移至目标元素的位置,然后释放鼠标。
### 5\. dragAndDropBy(WebElement 源,int xOffset,int yOffset)
### 5\. `dragAndDropBy(WebElement src, int xOffset, int yOffset)`
参数:
......@@ -42,9 +42,9 @@
`yOffset` - 垂直移动偏移。
说明:在源元素的位置单击并按住,在 x 轴上移动给定的 xOffset,在 y 轴上移动给定的 yOffset,然后释放鼠标。
说明:在源元素的位置单击并按住,在 x 轴上移动给定的`xOffset`,在 y 轴上移动给定的`yOffset`,然后释放鼠标。
### 6\. keyDown(java.lang.CharSequencemodifier_key)
### 6\. `keyDown(java.lang.CharSequencemodifier_key)`
参数:
......@@ -52,7 +52,7 @@
说明:执行修改键,但不释放键。 随后的交互可以假定按键被按下。 请注意,修饰键永远不会隐式释放-必须调用`keyUp(theKey)``sendKeys(Keys.NULL)`才能释放修饰键。
### 7\. moveByOffset(int xOffset,intyOffset)
### 7\. `moveByOffset(int xOffset, int yOffset)`
参数:
......@@ -60,9 +60,9 @@
`xOffset` - 垂直偏移。 负值表示向上移动鼠标。
说明:将鼠标从其当前位置(或 0,0)移动 x 轴上的给定 xOffset 和 y 轴上的 yOffset
说明:将鼠标从其当前位置(或`0, 0`)移动 x 轴上的给定`xOffset`和 y 轴上的`yOffset`
### 8\. moveToElement(WebElement 目标)
### 8\. `moveToElement(WebElement target)`
参数:
......@@ -70,11 +70,11 @@
说明:将鼠标移到目标元素的中间。
### 9\. perform()
### 9\. `perform()`
描述:执行或执行所有动作。
### 10\. release()
### 10\. `release()`
说明:在当前鼠标位置释放按下的鼠标左键。
......@@ -86,10 +86,10 @@
1. 开启 Chrome 浏览器
2. 导航到[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)
3. 使用 Actions 类执行以下键盘和鼠标操作,
3. 使用`Actions`类执行以下键盘和鼠标操作,
1. 找到并点击“自行车”复选框
2. 找到文本“消息”,然后双击以突出显示它
3. 在大写文本框中输入“hi there
3. 在大写文本框中输入“`hi there`
4.`click()`从第一位置拖放到可排序列表的第三位置
4. 在 Chrome 浏览器中验证输出
5. 验证 Eclipse IDE 控制台输出屏幕上是否有任何已打印的消息,并验证 JUnit 窗格是否成功
......@@ -193,7 +193,7 @@ actions
将焦点移至“消息”文本,然后双击以突出显示。 使用`perform()`方法执行操作。
#### 2.在文本框中以大写字母键入“hi there
#### 2.在文本框中以大写字母键入“`hi there`
```java
actions
......@@ -204,9 +204,9 @@ actions
.perform();
```
首先将焦点移至文本框,按住`SHIFT`键,键入文本“hi there”,使其大写,然后在`keyup`方法的帮助下释放`SHIFT`键。
首先将焦点移至文本框,按住`SHIFT`键,键入文本“`hi there`”,使其大写,然后在`keyup`方法的帮助下释放`SHIFT`键。
### 3.拖放“click()
### 3.拖放“`click()`
这可以通过两种方式完成:
......@@ -216,7 +216,7 @@ actions
.perform();
```
最简单的方法是使用`dragAndDropBy`方法,在该方法中,我们可以指定要拖动的元素以及 xOffset 和 yOffset
最简单的方法是使用`dragAndDropBy`方法,在该方法中,我们可以指定要拖动的元素以及`xOffset``yOffset`
如果您想走复杂路线,看起来像忍者,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册