提交 17cf3942 编写于 作者: W wizardforcel

2020-06-23 16:53:33

上级 201c1cfe
......@@ -9,13 +9,13 @@
您可能正在向两种类型的输入文本框输入文本。
* *第一种类型*是您在每个用于输入所要询问信息的网页中看到的普通文本框。 它按原样显示输入的值。
* *第二种类型*是密码文本框,用户在其中键入一个值,出于安全原因,它显示为点或星号或任何其他特殊字符。
* *第二种类型*是密码文本框,用户在其中键入一个值,出于安全原因,它显示为点或星号或任何其他特殊字符。
好消息是,对于这两种文本框类型,都可以使用相同的命令输入所需的值。
***示例*** 让我们在“名字”中输入“ testFirst”,在“创建密码”字段中输入“ test1234!”
**示例**:让我们在“名字”中输入“`testFirst`”,在“创建密码”字段中输入“`test1234!”`
**说明**:通过 **id** 找到所需的元素,然后使用 **sendKeys(“ value”)**输入相应的值 ] 方法
**说明**:通过 **id** 找到所需的元素,然后使用`sendKeys("value")`方法输入相应的值
考虑以下代码,
......@@ -24,7 +24,7 @@
<input name="Passwd" id="Passwd" type="password">
```
我们可以看到,“输入”标签具有“ **id** ”属性,名称和密码字段的属性分别为“ **FirstName** ”和“ **Passwd** ”。 使用这些 ID 定位这些网络元素后,我们将分别传递“ testFirst”和“ test1234!”作为它们的值。
我们可以看到,“输入”标签具有“`id`”属性,名称和密码字段的属性分别为“`FirstName`”和“`Passwd`”。 使用这些 ID 定位这些网络元素后,我们将分别传递“`testFirst`”和“`test1234!`”作为它们的值。
*代码:*
......@@ -33,7 +33,7 @@ driver.findElement(By.id("FirstName")).sendKeys("testFirst");
driver.findElement(By.id("Passwd")).sendKeys("test1234!");
```
要清除文本框中可能存在的任何文本,请使用 **clear()**方法。 它不需要任何参数。
要清除文本框中可能存在的任何文本,请使用`clear()`方法。 它不需要任何参数。
输出如下
......@@ -47,7 +47,7 @@ driver.findElement(By.id("Passwd")).sendKeys("test1234!");
让我们来看一个示例场景,为什么这个过程很棘手。
***示例*** 导航至 [www.amazon.com](https://www.amazon.com) ,然后单击主页上显示的“ kindle”图像(与创建该帖子的日期相同) )。 单击图像后,我们应该导航到相应页面。
**示例**:导航至 [www.amazon.com](https://www.amazon.com) ,然后单击主页上显示的“ kindle”图像(与创建该帖子的日期相同)。 单击图像后,我们应该导航到相应页面。
![Image](img/e8b6c97eab0095fb2fb26ac8a0fb070a.png)
......@@ -62,7 +62,7 @@ src="https://images-na.ssl-images-amazon.com/images/G/01/gateway/yiyiz/Kindle._C
***说明*** :如您所见,“ img”标签既没有提供“ id”属性,也没有提供“ class”属性。 这样就很难找到一个小小的中间! 对于您在网络上找到的大多数图像,情况就是如此。
考虑到 HTML 代码,可以使用 **cssSelector** 定位策略。 通过这种策略定位图像的方法有两种,
考虑到 HTML 代码,可以使用`cssSelector`定位策略。 通过这种策略定位图像的方法有两种,
一个。 使用“ img”标签和“ src”属性
......
......@@ -6,9 +6,9 @@
*准备开始*
**单选按钮**:在一组单选按钮中,一次只能选择一个。 在 HTML 中,它们使用<输入>标签表示,并带有**类型的**属性,称为“ **radio”**
**单选按钮**:在一组单选按钮中,一次只能选择一个。 在 HTML 中,它们使用`<input>`标签表示,并带有`type`属性,称为“`radio”`
**复选框**:在一组复选框中,每个复选框都单独运行,用户可以根据需要选择多个复选框。 在 HTML 中,使用<输入>标签并将**类型**属性称为“ **复选框”** 来表示复选框。
**复选框**:在一组复选框中,每个复选框都单独运行,用户可以根据需要选择多个复选框。 在 HTML 中,使用`<input>`标签并将`type`属性称为“`checkbox`来表示复选框。
现在我们对单选按钮和复选框的工作方式有了一些清晰的了解,让我们使用 Selenium WebDriver 进行一些有趣的操作。
......@@ -46,7 +46,7 @@ driver.findElement(By.cssSelector("input[value='Magazines']"));
## 2\. **检查单选按钮/复选框是否显示**
使用 Selenium WebDriver,检查特定的单选按钮或复选框是否按预期显示在网页上是小菜一碟! 我们有 isDisplayed()方法来进行救援。 此方法返回一个布尔值(显示 **true** – 元素,显示 **false** – element)。
使用 Selenium WebDriver,检查特定的单选按钮或复选框是否按预期显示在网页上是小菜一碟! 我们有 isDisplayed()方法来进行救援。 此方法返回一个布尔值(`true` – 元素显示,`false` – 元素不显示)。
**示例**:让我们检查网页上是否显示了“ Tricycle”复选框。
......@@ -64,7 +64,7 @@ driver.findElement(By.name("vehicle2")).isDisplayed();
## 3\. **检查单选按钮/复选框是否已启用,以便可以选择它**
同样,为了验证是否启用了特定的单选按钮或复选框,我们有 isEnabled()方法。 这还会返回一个布尔值( **true** – 元素已启用, **false** – 元素已禁用)。
同样,为了验证是否启用了特定的单选按钮或复选框,我们有 isEnabled()方法。 这还会返回一个布尔值( `true` – 元素已启用,`false` – 元素已禁用)。
**示例**:让我们检查是否启用了“ Tricycle”复选框。 如果是的话,让我们检查一下,否则我们只会在控制台上打印一条消息。
......@@ -118,7 +118,7 @@ if (magazinesRadioBtn.isSelected()) {
## 5\. **选择/单击单选按钮或复选框**
您为什么认为 Selenium WebDriver 中有 **click()**? 你懂我! 选中单选按钮非常容易,对于复选框,可以使用相同的 click()在选中和取消选中之间切换!
您为什么认为 Selenium WebDriver 中有`click()`? 你懂我! 选中单选按钮非常容易,对于复选框,可以使用相同的 click()在选中和取消选中之间切换!
**示例**:让我们选中并取消选中“轿车”复选框。
......
......@@ -43,11 +43,11 @@ options.get(1).click();
0、1、2、3 是下拉列表的索引值。
# 方法 2:使用“ **选择”** 类。
# 方法 2:使用`Select`类。
让我们深入研究并了解 Select 类的工作原理,并看一下它是否具有魔力。 以及为什么您首先要使用它?
使用方法 1 具有主要缺点。 由于没有唯一标识符,因此选择特定选项变得非常困难。 另外,要选择多个选项,请取消选择特定的项目,这会变得很复杂。 Selenium Webdriver 再次为我们解救! 它为 **Select 类**提供了预定义的方法,专门用于处理下拉菜单和多选方案。
使用方法 1 具有主要缺点。 由于没有唯一标识符,因此选择特定选项变得非常困难。 另外,要选择多个选项,请取消选择特定的项目,这会变得很复杂。 Selenium Webdriver 再次为我们解救! 它为`Select`提供了预定义的方法,专门用于处理下拉菜单和多选方案。
**步骤 1**:该选择类在“ org.openqa.selenium.support.ui.Select”包中可用。 因此,必须将此包导入我们的测试脚本中。
......@@ -65,9 +65,9 @@ Select languages = new Select(driver.findElement(By.id("element_ID")));
**步骤 3**:找到下拉 Web 元素并创建 Select 类的对象后,就可以访问其所有方法来执行选择和取消选择。
***注意:***
**注意:**
*Select 类仅适用于具有< select >标签的 Web 元素。*
*`Select`类仅适用于具有`<select>`标签的 Web 元素。*
下面是 Select 类中所有可用方法的快照。
......@@ -75,19 +75,19 @@ Select languages = new Select(driver.findElement(By.id("element_ID")));
这里有很多要讨论和讨论的要点。 让我们通过示例和代码片段介绍一些常用的方法。
***Sticky Note:***
**注意:**
*如果找不到匹配的选项,则可能会使用所有 select 和 deselect 方法碰到 **NoSuchElementException** 。*
*如果找不到匹配的选项,则所有`select`和`deselect`方法可能会碰到`NoSuchElementException`。*
### 1\. selectByVisibleText(String arg0)和 deselectByVisibleText(String arg0)
这些方法选择和取消选择一个显示的文本与传递的 String 参数完全匹配的选项。
***语法***:selectObject.selectByVisibleText(“ displayed_option_text”);*
**语法**`selectObject.selectByVisibleText("displayed_option_text")`
*selectObject.deselectByVisibleText(“ displayed_option_text”);*
`selectObject.deselectByVisibleText("displayed_option_text")`
***示例*** 让我们从“编程语言”下拉菜单中选择“ JavaScript”。
**示例**:让我们从“编程语言”下拉菜单中选择“JavaScript”。
*代码:*(选择)
......@@ -110,11 +110,11 @@ languages.deselectByVisibleText("JavaScript");
这些方法选择和取消选择其 value 属性与传递的 String 参数匹配的选项。
***语法***:selectObject.selectByValue(“ value_attribute_text”);*
**语法**`selectObject.selectByValue("value_attribute_text")`
*selectObject.deselectByValue(“ value_attribute_text”);*
`selectObject.deselectByValue("value_attribute_text")`
***示例*** 让我们从 Selenium Tool Suite 多选选项中选择“ Selenium RC”。
**示例**:让我们从 Selenium Tool Suite 多选选项中选择“Selenium RC”。
右键单击所需的 Web 元素,然后选择 inspect 元素,将给出相应的 HTML 代码,如下所示,
......@@ -137,11 +137,11 @@ multiSelect.selectByValue("RC");
这些方法选择和取消选择指定索引值处的选项。 重要的是要注意,索引值始终以零开头。
***语法***:selectObject.selectByIndex(“ option_index”);*
**语法**:selectObject.selectByIndex(“ option_index”);*
*selectObject.deselectByIndex(“ option_index”);*
***示例*** 让我们从 Selenium Tool Suite 多选选项中取消选择“ Selenium RC”。
**示例*** 让我们从 Selenium Tool Suite 多选选项中取消选择“ Selenium RC”。
基于 HTML 代码,Selenium IDE 的索引为 0,Selenium WebDriver 的索引为 1,Selenium RC 的索引为 2。
......@@ -155,13 +155,13 @@ multiSelect.deselectByIndex(2);
此方法清除选择。 没有传递参数。
***Sticky Note:***
**注意:**
*此方法仅适用于多选方案,即< select >标签应具有值为“ multiple”的 multi 属性。 否则抛出“ **NotImplementedError** ”。*
*此方法仅适用于多选方案,即`<select>`标签应具有值为“`multiple`”的`multi`属性。 否则抛出`NotImplementedError`。*
***语法***:selectObject.deselectAll()*
**语法**`selectObject.deselectAll()`
***示例*** 让我们取消选择在 Selenium Tool Suite 多重选择框中选择的所有选项。
**示例**让我们取消选择在 Selenium Tool Suite 多重选择框中选择的所有选项。
*Code:*
......@@ -173,13 +173,13 @@ multiSelect.deselectAll();
当您想知道 Web 元素是否允许多选时,此方法很方便。 它返回 true 或 false。 没有传递参数。
***语法***:selectObject.isMultiple()*
**语法**`selectObject.isMultiple()`
### 6\. getOptions()
此方法作为 Web 元素返回在多重选择框中可用的所有选项的列表。
***语法*** selectObject.getOptions()
**语法**`selectObject.getOptions()`
*Code:*
......@@ -191,7 +191,7 @@ List<WebElement> allOptions = multiSelect.getOptions();
此方法在多重选择框中返回第一个选定的选项。 如果在仅允许单个选择的下拉菜单中使用此选项,则将所选选项作为 Web 元素返回。
***语法***:selectObject.getFirstSelectedOption()。getText()*
**语法**`selectObject.getFirstSelectedOption().getText()`
这将返回所选的选项文本。
......@@ -199,7 +199,7 @@ List<WebElement> allOptions = multiSelect.getOptions();
此方法返回作为多选框的一部分而被选择为 Web 元素的所有选项的列表。
***语法***:selectObject.getAllSelectedOptions()*
**语法**`selectObject.getAllSelectedOptions()`
*Code:*
......
......@@ -10,7 +10,7 @@
在“练习表”中,我们有一个具有两行两列的表。 我们在第一行第二列中嵌套了另一个表。
***例如***
**例如**
让我们尝试访问嵌套表的第一行,并将文本“ Inner Row 1”打印到控制台。 由于我们不在这里使用 XPath,因此它将变得有些复杂。 但是一旦您掌握了如何以一个嵌套级别定位一个单元,然后访问更深层次的单元就轻松了! 第一步是使用标签名称“ table”查找主表。 可以使用任何定位策略,但通常表的行和列没有 ID 或名称。 因此,访问它们的最佳方法是使用它们相应的标签名称。 第二步是使用获得的 Web 元素(表),找到嵌套表。 最后一步是,使用嵌套表 web 元素,找到第一行并获取其文本!
......@@ -48,7 +48,7 @@ System.out.println("Inner table first row text = " + innerRow1.getText());
第一种方法需要使用三个 Web 元素来访问所需的单元格。 如果涉及许多嵌套级别,则用于定位元素的命令数量将增加。 为了减轻这种情况,我们有 XPath 可以拯救我们! “ XPath”一词会响起吗? 如果不是这样,请参考 XPath 的[定位元素以简单的方式构造它。](https://javabeginnerstutorial.com/selenium/9n-webdriver-locating-elements-4a/)
***例如***
**例如**
让我们找到嵌套表的第二行,并将其内容打印到控制台。 相对路径是 XPath 的一部分,用于定位嵌套表的所需单元格。
......
......@@ -2,11 +2,11 @@
> 原文: [https://javabeginnerstutorial.com/selenium/9w-webdriver-looping-table-elements/](https://javabeginnerstutorial.com/selenium/9w-webdriver-looping-table-elements/)
欢迎回来,勇士们! 我们刚刚看到了如何检查使用和不使用 XPath 的表的特定单元格中是否存在特定的[数据。 是时候遍历每个元素并可视化 Selenium WebDriver 的功能了。 让我们回到我们的](https://javabeginnerstutorial.com/selenium/9v-webdriver-handling-tables-two-ways/)[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)并关注“ **书籍&作者”** 表以了解这一概念。
欢迎回来,勇士们! 我们刚刚看到了如何检查使用和不使用 XPath 的表的特定单元格中是否存在特定的[数据](https://javabeginnerstutorial.com/selenium/9v-webdriver-handling-tables-two-ways/)。 是时候遍历每个元素并可视化 Selenium WebDriver 的功能了。 让我们回到我们的[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)并关注“**书籍&作者”**表以了解这一概念。
## 步骤 1:
**使用其 ID“ BooksAuthorsTable”找到“图书&作者”** 表。 HTML 代码如下
使用其 ID “`BooksAuthorsTable`”找到“图书&作者” 表。 HTML 代码如下:
```java
<table id="BooksAuthorsTable" class="table table-bordered">
......@@ -93,7 +93,7 @@ for(int j=0; j<colNum; j++){
您有能力集中精力下坡吗? 如果是,让我们看看 BrainBell!
***BrainBell – 可视化!*** *我们大多数人都知道,为我们希望记住的概念创建心理图片比单词更清晰,更容易记住。 我们不知道或做的是仔细观察它几秒钟。 这将有助于轻松调用它。*
**BrainBell – 可视化!** *我们大多数人都知道,为我们希望记住的概念创建心理图片比单词更清晰,更容易记住。 我们不知道或做的是仔细观察它几秒钟。 这将有助于轻松调用它。*
话虽如此,让我们看一下到目前为止讨论的整体情况!
......
......@@ -4,9 +4,9 @@
嗨呀爱好者! 想知道为什么 Selenium WebDriver 中存在 Alert 界面? 好吧,我的朋友,对于您所寻找的信息,仅此帖子即可。 我们将讨论基本上属于三种类型的弹出框-警报框,确认框和提示框。 与往常一样,我们有[演示站点](https://chandanachaitanya.github.io/selenium-practice-site/)来说明这些概念。
***注意:***
**注意:**
*如果网页上出现一个弹出框,则只要不接受或关闭警报,用户就无法对基础页面执行任何操作。 请注意,如果您尝试使用警报访问网页上的任何元素,则可能会碰到**“ UnhandledAlertException:存在模态对话框”** 。*
*如果网页上出现一个弹出框,则只要不接受或关闭警报,用户就无法对基础页面执行任何操作。 请注意,如果您尝试使用警报访问网页上的任何元素,则可能会碰到“`UnhandledAlertException`:存在模态对话框”。*
## 1.警报框
......@@ -18,7 +18,9 @@ JavaScript 代码:
window.alert("This is a simple alert box! \nYou can't escape from me until you click 'OK'!");
```
## ![Alert Box](img/ef37d2f8b6773bd5e6f2e813f2a9c463.png) 2\. **确认框**
![Alert Box](img/ef37d2f8b6773bd5e6f2e813f2a9c463.png)
## 2\. **确认框**
确认框为用户提供了两个选项,以验证/接受或关闭某些内容。 用户必须单击“确定”或“取消”才能继续。 确认弹出框返回布尔值。 当用户点击“确定”时返回 true,而当点击“取消”时返回 false。
......
......@@ -4,7 +4,7 @@
大家好! 测试涉及多个窗口的工作流已成为生活的一部分。 借助 Selenium WebDriver,在这些打开的窗口之间进行平滑切换已成为小菜一碟。 如果您像我一样,那么您可能会急切希望看到所有这些在我们的代码中如何真正起作用。 因此,让我们继续深入探讨吧……
每当实例化一个新的 WebDriver 对象时,就会向每个打开的唯一窗口分配一个唯一的字母数字 ID。 这个独特的 ID 被称为“窗口句柄”-*,这是 Selenium Ville* 拥挤的街道上的另一个新名词。 因此,使用这些唯一的 ID,我们可以轻松地在窗口之间切换控件并执行所需的活动。
每当实例化一个新的 WebDriver 对象时,就会向每个打开的唯一窗口分配一个唯一的字母数字 ID。 这个独特的 ID 被称为“窗口句柄”- 这是 *Selenium Ville* 拥挤的街道上的另一个新名词。 因此,使用这些唯一的 ID,我们可以轻松地在窗口之间切换控件并执行所需的活动。
1.字符串 getWindowHandle():
......@@ -21,7 +21,7 @@ String parentWinHandle = driver.getWindowHandle();
此方法用于获取 Set 中所有打开的窗口的窗口句柄。
*Syntax:*
*语法*
```java
// Get the window handles of all open windows
......
......@@ -8,7 +8,7 @@
### 1.单击(WebElement 目标)
参数:*目标* – 要单击的元素。
参数:`target` – 要单击的元素。
说明:单击给定目标的中间。
......@@ -18,7 +18,7 @@
### 3\. doubleClick(WebElement 目标)
Parameter: *target* – element to click.
参数:`target` – 要点击的元素。
说明:在给定目标元素的中间双击。 等效于:`Actions.moveToElement(element).doubleClick();`
......@@ -26,47 +26,47 @@ Parameter: *target* – element to click.
参数:
*来源* – 要拖动的元素,即模拟按钮按下的位置
`source` – 要拖动的元素,即模拟按钮按下的位置
*目标* – 在以下位置移动并释放鼠标的元素
`target` – 在以下位置移动并释放鼠标的元素
说明:在源元素的位置单击并按住,移至目标元素的位置,然后释放鼠标。
### 5\. dragAndDropBy(WebElement 源,int xOffset,int yOffset)
Parameters:
参数:
*源* – 模拟按钮按下的元素。
`source` – 模拟按钮按下的元素。
*xOffset* -水平移动偏移。
`xOffset` - 水平移动偏移。
*yOffset* -垂直移动偏移。
`yOffset` - 垂直移动偏移。
说明:在源元素的位置单击并按住,在 x 轴上移动给定的 xOffset,在 y 轴上移动给定的 yOffset,然后释放鼠标。
### 6\. keyDown(java.lang.CharSequencemodifier_key)
Parameters:
参数:
*Modifier_key* -可以是`Keys.SHIFT``Keys.ALT``Keys.CONTROL`。 如果提供的密钥都不是,则抛出`IllegalArgumentException`
`Modifier_key` - 可以是`Keys.SHIFT``Keys.ALT``Keys.CONTROL`。 如果提供的密钥都不是,则抛出`IllegalArgumentException`
说明:执行修改键,但不释放键。 随后的交互可以假定按键被按下。 请注意,修饰键永远不会隐式释放-必须调用`keyUp(theKey)``sendKeys(Keys.NULL)`才能释放修饰键。
### 7\. moveByOffset(int xOffset,intyOffset)
Parameters:
参数:
*xOffset* -水平偏移。 负值表示将鼠标左移。
`xOffset` - 水平偏移。 负值表示将鼠标左移。
*xOffset* -垂直偏移。 负值表示向上移动鼠标。
`xOffset` - 垂直偏移。 负值表示向上移动鼠标。
说明:将鼠标从其当前位置(或 0,0)移动 x 轴上的给定 xOffset 和 y 轴上的 yOffset。
### 8\. moveToElement(WebElement 目标)
Parameters:
参数:
*目标*-要移动的元素。
`target` - 要移动的元素。
说明:将鼠标移到目标元素的中间。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册