diff --git a/src/main/java/pres/auxiliary/work/selenium/element/AbstractBy.java b/src/main/java/pres/auxiliary/work/selenium/element/AbstractBy.java index dd2aaaf..c5fd0af 100644 --- a/src/main/java/pres/auxiliary/work/selenium/element/AbstractBy.java +++ b/src/main/java/pres/auxiliary/work/selenium/element/AbstractBy.java @@ -257,6 +257,11 @@ public abstract class AbstractBy { * @return {@link WebElement}类对象{@link List}集合 */ protected List recognitionElement(ElementData elementData) { + //判断是否需要自动切换窗体,若需要,则对元素窗体进行切换 + if (isAutoSwitchIframe) { + autoSwitchFrame(elementData.getIframeNameList()); + } + //获取元素的定位类型及定位内容 ArrayList elementByTypeList = elementData.getByTypeList(); ArrayList elementValueList = elementData.getValueList(); diff --git a/src/main/java/pres/auxiliary/work/selenium/element/CommonBy.java b/src/main/java/pres/auxiliary/work/selenium/element/CommonBy.java index 0d2d649..465dde2 100644 --- a/src/main/java/pres/auxiliary/work/selenium/element/CommonBy.java +++ b/src/main/java/pres/auxiliary/work/selenium/element/CommonBy.java @@ -40,11 +40,6 @@ public class CommonBy extends AbstractBy { elementData = new ElementData(elementName, read); elementData.addLinkWord(linkKeys); - //判断是否需要自动切换窗体,若需要,则对元素窗体进行切换 - if (isAutoSwitchIframe) { - autoSwitchFrame(elementData.getIframeNameList()); - } - //获取元素数据在页面上对应的一组元素,若无法查到元素,则记录elementList为null try { elementList = recognitionElement(elementData); diff --git a/src/main/java/pres/auxiliary/work/selenium/element/Element.java b/src/main/java/pres/auxiliary/work/selenium/element/Element.java index 65a509a..a9ec7ca 100644 --- a/src/main/java/pres/auxiliary/work/selenium/element/Element.java +++ b/src/main/java/pres/auxiliary/work/selenium/element/Element.java @@ -1,6 +1,9 @@ package pres.auxiliary.work.selenium.element; +import java.util.ArrayList; + import org.openqa.selenium.NoSuchElementException; +import org.openqa.selenium.TimeoutException; import org.openqa.selenium.WebElement; /** @@ -94,10 +97,15 @@ public class Element { * 重新根据元素信息,在页面查找元素 */ public int againFindElement() { - //重新拉取元素 - abstractBy.elementList = abstractBy.recognitionElement(elementData); //切换当前读取的元素信息 abstractBy.elementData = elementData; + + //重新拉取元素数据在页面上对应的一组元素,若无法查到元素,则记录elementList为null + try { + abstractBy.elementList = abstractBy.recognitionElement(elementData); + } catch (TimeoutException e) { + abstractBy.elementList = new ArrayList<>(); + } return abstractBy.elementList.size(); } diff --git a/src/main/java/pres/auxiliary/work/selenium/element/MultiBy.java b/src/main/java/pres/auxiliary/work/selenium/element/MultiBy.java index 11ecb55..129c261 100644 --- a/src/main/java/pres/auxiliary/work/selenium/element/MultiBy.java +++ b/src/main/java/pres/auxiliary/work/selenium/element/MultiBy.java @@ -64,11 +64,6 @@ public abstract class MultiBy> extends AbstractBy { elementData = new ElementData(elementName, read); elementData.addLinkWord(linkKeys); - //判断是否需要自动切换窗体,若需要,则对元素窗体进行切换 - if (isAutoSwitchIframe) { - autoSwitchFrame(elementData.getIframeNameList()); - } - //获取元素数据在页面上对应的一组元素,若无法查到元素,则记录elementList为null try { elementList = recognitionElement(elementData); diff --git a/src/main/java/pres/auxiliary/work/selenium/event/WaitEvent.java b/src/main/java/pres/auxiliary/work/selenium/event/WaitEvent.java index b2039de..429f46f 100644 --- a/src/main/java/pres/auxiliary/work/selenium/event/WaitEvent.java +++ b/src/main/java/pres/auxiliary/work/selenium/event/WaitEvent.java @@ -68,7 +68,7 @@ public class WaitEvent extends AbstractEvent{ //调用isDisplayed()方法,判断元素是否存在 try { return !element.getWebElement().isDisplayed(); - } catch (NoSuchElementException e) { + } catch (NoSuchElementException | TimeoutException e) { //若在调用获取页面元素时抛出NoSuchElementException异常,则说明元素本身不存在,则直接返回true return true; } catch (StaleElementReferenceException e) {