All Downloads are FREE. Search and download functionalities are using the official Maven repository.

holmos.webtest.element.locator.Locator Maven / Gradle / Ivy

There is a newer version: 1.0.2u10
Show newest version
package holmos.webtest.element.locator;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**元素定位器类,这个定位器很高级,采用了多级定位,即多个方法定位
* 如果第一级别定位失败或者无定位器,那么采用第二级定位,以此类推
* 共分为id->name->xpath->css->linkText->partialLinkText->tag name * 其中有两个特殊的匹配方式: * (1)selenium支持正则匹配,webdriver不支持,selenium不支持纯粹的部分匹配 * (2)webdriver支持tag name匹配,selenium不支持 * * @author 吴银龙([email protected]) * */ public class Locator { /**由于定位方案多了,所以在Selenium引擎的时候需记录当前的locator
* 当引擎为webdriver的时候,WebElement已经生成,不用进行记录*/ private String seleniumCurrentLocator; public String getSeleniumCurrentLocator() { return seleniumCurrentLocator; } public void setSeleniumCurrentLocator(String seleniumCurrentLocator) { this.seleniumCurrentLocator = seleniumCurrentLocator; } private Map locators=new HashMap(); private Map attributes=new HashMap(); public void addIdLocator(String id){ locators.put("id", id); } public void addNameLocator(String name){ locators.put("name", name); } public void addXpathLocator(String xpath){ locators.put("xpath", xpath); } public void addCSSLocator(String css){ locators.put("css", css); } public void addLinkTextLocator(String linkText){ locators.put("linktext",linkText); } public void addPartialLinkTextLocator(String partialLinkText){ locators.put("partiallinktext",partialLinkText); } public void addTagNameLocator(String tagName){ locators.put("tagname", tagName); } public void addRegularLocator(String regular){ locators.put("regular",regular); } public void addClassLocator(String className){ locators.put("class", className); } public void addAttributeLocator(String attributeName,String attributeValue){ attributes.put(attributeName, attributeValue); } /**根据locatorType获得locator*/ public String getLocator(String locatorType){ return locators.get(locatorType); } public String getLocatorById(){ return locators.get("id"); } public String getLocatorByName(){ return locators.get("name"); } public String getLocatorByXpath(){ return locators.get("xpath"); } public String getLocatorByCSS(){ return locators.get("css"); } public String getLocatorByLinkText(){ return locators.get("linktext"); } public String getLocatorByPartialLinkText(){ return locators.get("partiallinktext"); } public String getLocatorByRegular(){ return locators.get("regular"); } public String getLocatorByTagName(){ return locators.get("tagname"); } public String getLocatorByClass(){ return locators.get("class"); } public String getXpathFromTagName(){ if(locators.get("tagname")!=null) return ".//"+locators.get("tagname"); return null; } public String getXpathFromId(){ if(locators.get("id")!=null) return ".//*[@id=\'"+locators.get("id")+"\']"; return null; } public String getXpathFromName(){ if(locators.get("name")!=null) return ".//*[@name=\'"+locators.get("name")+"\']"; return null; } public String getXpathFromClass(){ if(locators.get("class")!=null) return ".//*[@class=\'"+locators.get("class")+"\']"; return null; } public String getXpathFromLinkText(){ if(locators.get("linktext")!=null) return ".//*[text()=\'"+locators.get("linktext")+"\']"; return null; } public String getXpathFromPartialLinkText(){ if(locators.get("partiallinktext")!=null) return ".//*[contains(text(),\'"+locators.get("partiallinktext")+"\')]"; return null; } public String getXpathFromAttribute(){ StringBuilder xpath=new StringBuilder(); if(attributes.size()!=0){ Setkeys=attributes.keySet(); Iteratorit=keys.iterator(); String key=it.next(); xpath.append(".//*[@"+key+"=\'"+attributes.get(key)+"\' "); while(it.hasNext()){ key=it.next(); xpath.append("and @"+key+"=\'"+attributes.get(key)+"\' "); } xpath.append("]"); return xpath.toString(); }return null; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy