开发中部分代码如附件
driver配置,windows 配置: TestBase.cs
url设置和浏览器参数设置:TestStarter.cs
异常后截图设置:RemoteWebDriverEx.cs TestRunner line 218
关于case中权限的设置管理类 PremissionManager.cs
关于测试中的资源文件读取写入管理类 CaseResourceManager.cs
关于测试中的case作者,模块,功能 注解类TestCaseMetadataAttribute.cs
case 涉及到的 属性有:名字,模块,脚本作者,文本作者,检查点,步奏集合,检查相,每一步的具体内容等。
1.查找元素:By.Name,By.Id, By.Tag, By.XPath, By.TagName, By.ClassName
e.g. By.XPath("//*[contains(@id,'" + this.screenId + "_streamlink_')]")
By.XPath("./div[contains(@class,'dgrid-row')]")
2. doubleClick
Actions builder = new Actions(this.driver);
builder.DoubleClick(webElement);
IAction doubleClick = builder.Build();
doubleClick.Perform();
3.right click . new Actions(driver).ContextClick(webElement).Perform();
4. drag .
new Actions(driver).ClickAndHold(source).MoveByOffset(xOffset, yOffset).Release().Build().Perform();
5.select item in dropdown list
protected IWebElement SelectDropDownItem(string selectId, string searchItemName)
{
IWebElement el=null;
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait.Until((d) =>
{
try
{
int length = this.driver.FindElements(By.Id(selectId)).Count;
if (length > 1)
{
this.driver.FindElements(By.Id(selectId))[length - 1].FindElement(By.ClassName(HTMLConstants.selectContainer)).Click();
}
else
{
this.driver.FindElement(By.Id(selectId)).FindElement(By.ClassName(HTMLConstants.selectContainer)).Click();
SeleniumUtils.ThreadSleep(500);
}
IWebElement listElement = this.driver.FindElement(By.Id(selectId + HTMLConstants.dropdownTable_suffix));
el = SearchItemInListByName(listElement, By.ClassName(HTMLConstants.selectItemClass), searchItemName, true);
}
catch (Exception e)
{
el = null;
}
return el;
});
return el;
}
protected IWebElement SearchItemInListByName(IWebElement listElement,By ItemBy,string searchItemName,bool needClick = false)
{
IWebElement itemElement = null;
IList<IWebElement> caseElementList = listElement.FindElements(ItemBy).ToList();
int defaultCount = 0;
int newCount = 0;
do
{
defaultCount = caseElementList.Count;
ScrollToView(caseElementList[caseElementList.Count - 1]);
caseElementList = listElement.FindElements(ItemBy).ToList();
newCount = caseElementList.Count;
} while (defaultCount < newCount);
foreach (IWebElement subElement in caseElementList)
{
// if(!subElement.Displayed){
ScrollToView(subElement);
//}
if (!subElement.Text.Equals("") && subElement.Text.Trim().Equals(searchItemName.Trim()))
{
itemElement = subElement;
if (needClick && itemElement != null) this.GetActions().MoveToElement(itemElement).Click(itemElement).Build().Perform();
return itemElement;
}
}
return itemElement;
}
/// <summary>
/// Search Item in the dropdown list by name.
/// </summary>
/// <param name="selectId"> drop down select id</param>
/// <param name="searchItemName"> need select item.</param>
/// <returns></returns>
protected IWebElement SelectDropDownItem(string selectId, string searchItemName, Func<bool> func, bool expectedValue= true)
{
IWebElement el = null;
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
wait.Until((d) =>
{
SelectDropDownItem(selectId, searchItemName);
return func.Invoke() == expectedValue;
});
return el;
}
6. scroll to view
protected void ScrollToView(IWebElement viewElement) {
if (viewElement == null) return;
ExecuteScript(HTMLConstants.scrollJs, viewElement);
//just using for page remance.
SeleniumUtils.ThreadSleep(500);
}
protected Object ExecuteScript(string scriptCodes, params object[] args)
{
object obj = null;
try
{
obj = ((IJavaScriptExecutor)driver).ExecuteScript(scriptCodes, args);
}
catch (Exception e) { }
return obj;
}
7. scroll to bottom
protected void scrollToBottom(IWebElement webElement, By by)
{
try
{
List<IWebElement> subElement = webElement.FindElements(by).ToList();
if (subElement == null) return;
int currentPoint = 0;
while (webElement.FindElements(by).ToList().Count > currentPoint)
{
currentPoint = webElement.FindElements(by).ToList().Count;
subElement = webElement.FindElements(by).ToList();
ScrollToView(subElement.Last());
SeleniumUtils.ThreadSleep(200);
}
}catch(Exception e){
}
}
相关推荐
个人对selenium实践总结,希望能给大家参考一下
文档为个人总结的Python+selenium一些基本的用法,请指正,谢谢。
这是我个人对phpunit+selenium测试环境搭建的一些总结绝对原创,本人只是菜鸟水平有很多没有写到的地方还望多多包涵。
selenium基于JAVA3的环境搭建到开始测试,个人实践总结
spiderpython3 各种爬虫技术个人爬虫笔记:@ , 若fork或star请注明来源note笔记爬虫介绍: 《爬虫基础学习(总结)》模块库: cookie&代理package/6wordcloud&jieba 词云功能包名作用数据获取request爬取网页数据 ...
xpath是一种在xm文档中定位的语言,详细简介,请自行参照百度百科,本文主要总结一下xpath的使用方法,个人看法,如有不足和错误,敬请指出。 注意:xpath的定位 同一级别的多个标签 索引从1开始 而不是0 1. 绝对...
使用谷歌浏览器 语法(操作步骤) 1.访问网址,登录时,记住密码 2.找到谷歌浏览器个人资料路径 3.将个人资料路径添加到谷歌浏览器配置中 options = webdriver.ChromeOptions() options.add_argument(user_data) 4...
本文总结介绍接口测试框架开发,环境使用python3+selenium3+unittest测试框架及ddt数据驱动,采用Excel管理测试用例等集成测试数据功能,以及使用HTMLTestRunner来生成测试报告,目前有开源的poman、Jmeter等接口...