From fe2df99c39286b7b4410c632dcba045f8218673b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E5=AE=87=E7=90=A6?= <465615774@qq.com> Date: Sun, 24 May 2020 15:54:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E4=B8=8B=E6=8B=89=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E7=9A=84=E6=96=87=E6=9C=AC=E9=80=89=E6=8B=A9=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E7=94=B1=E5=85=A8=E5=8C=B9=E9=85=8D=E6=94=B9=E4=B8=BA=E5=85=B3?= =?UTF-8?q?=E9=94=AE=E8=AF=8D=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../work/selenium/element/SelectBy.java | 72 ++++++++++++++++--- .../work/selenium/element/SelectByTest.java | 17 +---- 2 files changed, 64 insertions(+), 25 deletions(-) diff --git a/src/main/java/pres/auxiliary/work/selenium/element/SelectBy.java b/src/main/java/pres/auxiliary/work/selenium/element/SelectBy.java index 4a06738..ce375d6 100644 --- a/src/main/java/pres/auxiliary/work/selenium/element/SelectBy.java +++ b/src/main/java/pres/auxiliary/work/selenium/element/SelectBy.java @@ -1,10 +1,12 @@ package pres.auxiliary.work.selenium.element; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import org.openqa.selenium.By; +import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.Select; @@ -13,6 +15,39 @@ import org.openqa.selenium.support.ui.WebDriverWait; import pres.auxiliary.selenium.xml.ByType; import pres.auxiliary.work.selenium.brower.AbstractBrower; +/** + *
文件名:SelectBy.java
+ *用途:
+ * 提供获取下拉框中选项元素的方法,支持标准型下拉框选项(由select与option标签组成的下拉框)以及
+ * 非标准型下拉框选项(由普通的div、li等元素组成的选项),并支持根据关键词查找选项。需要注意的是,
+ * 标准下拉选项和非标准下拉选项需要传入的参数不同,例如,
+ * 标准下拉框:
+ * <select id='test'>
+ * <option>男</option>
+ * <option>女</option>
+ * <option>其他</option>
+ * </select>
+ * 对于该标准的下拉框选项,只需要定位到//select[@id='test'],得到其WebElement对象即可,但对于非标准的下拉框其下拉框是由input和button标签构成:
+ * <div>
+ * <span><input/></span>
+ * <span><button/></span>
+ * </div>
+ * 点击button对应的按钮后,其下也能弹出选项,但其选项是由div标签写入text构成:
+ * <div id='test'>
+ * <div>男</div>
+ * <div>女</div>
+ * <div>其他</div>
+ * </div>
+ * 对于这种非标准的下拉框选项,需要传入选项所在的所有div标签对应的WebElement元素,在上例,则需要定位到//div[@id='test']/div,
+ * 注意,末尾的div不指定数字,则可以代表整个选项。
+ *
编码时间:2020年5月24日下午3:30:00
+ *修改时间:2020年5月24日下午3:30:00
+ * @author 彭宇琦 + * @version Ver1.0 + * @since JDK 12 + * + */ public class SelectBy extends MultiBy { /** * 用于存储获取下拉选项时的信息 @@ -110,19 +145,36 @@ public class SelectBy extends MultiBy { } /** - * 根据选项内容,返回相应的选项元素,当传入的元素名称不存在时,则返回null;当存在重复的选项 - * 名称时,则选择第一个选项 + * 根据关键词组查找选项,并返回选项元素,当传入的元素名称不存在时,则抛出NoSuchElementException异常; + * 当查询到有多个包含关键词的选项时,则选择第一个选项