开发中部分代码如附件
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){
}
}
相关推荐
它功能强大,但由于高昂的价格,使得很多小型团队和个人开发者难以承受。 为了应对这一挑战,一群来自 ThoughtWorks 的开发者决定自行研发一款免费且开放源代码的自动化测试工具,并将其命名为 Selenium。...
总结起来,通过Selenium进行模拟登录,我们可以自动化执行一系列网页操作,包括打开浏览器、访问页面、填写表单和点击按钮。在这个过程中,选择合适的浏览器驱动(如火狐或PhantomJS)以及正确地定位网页元素是关键...
### Selenium Grid 教程 #### 一、简介 Selenium Grid 是一款强大的自动化测试辅助工具,主要用于提升基于...无论是对于个人开发者还是大型企业,掌握 Selenium Grid 的使用方法都将极大地提升测试工作的效率和质量。
总结来说,Selenium2结合Python在自动化测试领域具有广泛应用,能够帮助测试人员提升工作效率,减少重复劳动。编程语言(特别是Python)在自动化测试中的使用变得越来越普遍,而 Selenium WebDriver API 是自动化...
文档中提到的一个具体示例是使用 Selenium IDE 测试网易返现个人中心的登录功能及订单返现值。这一过程包括了: - **登录操作**:通过录制登录操作,验证用户能否成功登录网易返现个人中心。 - **检查返现值**:...
### Selenium 介绍与功能网页测试 #### 知识点概览 Selenium 是一个用于自动化浏览器操作的强大工具,主要...无论是对于初学者还是有经验的测试工程师,学习和掌握Selenium都是提升个人技能和团队生产力的重要一步。
总结来说,这个Selenium脚本利用Python和WebDriver实现自动化删除Facebook墙上的所有帖子。它涉及到网页自动化、元素定位、事件触发以及异常处理等技术,是Python在Web自动化领域应用的一个实例。同时,这个话题也...
总结来说,这两个压缩包包含了一个开源项目的关键组件:一个是用于自动化测试的Selenium IE驱动,另一个是NK API的数据模型源代码。开发者可以通过研究这些资源来学习自动化测试技术,以及如何设计和使用API数据模型...
### Selenium入门教程C#分享知识点概述 #### 一、Selenium简介 - **定义**: Selenium 是一款...通过本教程的学习,读者将能够掌握 Selenium 的基本概念、优势以及如何使用 Selenium IDE 进行简单的自动化测试工作。
- **选择合适的Selenium工具**:根据项目需求和个人偏好选择最适合的工具,如Selenium IDE或Selenium WebDriver。 - **Selenium命令介绍**:Selenium提供了丰富的命令集用于模拟用户操作和验证页面元素。 - **测试...
- **总结**:回顾Selenium2 Python自动化测试的核心概念和技术要点。 - **未来趋势**:探讨自动化测试领域的发展趋势,如AI在自动化测试中的应用等。 --- 通过上述内容,我们可以看出《selenium2 Python自动化测试...
总结来说,这个压缩包中的内容是关于使用Selenium自动化工具创建的学校健康系统自动打卡程序,涉及Python编程、Selenium库的使用、元素定位、事件模拟以及可能的配置和异常处理等知识。用户需要了解这些概念,并根据...
### 使用Selenium与Requests组合实现登录页面 在自动化测试领域,尤其是Web应用的自动化测试,Selenium 和 Requests 是两个非常重要的工具。Selenium 主要用于模拟用户操作浏览器的行为,而 Requests 则更多地用于...
本文将详细介绍如何使用 Selenium 在 Python 环境下打开指定的 Chrome 账号,这对于需要模拟用户登录状态进行自动化测试或数据抓取的应用场景非常有用。 #### 获取 User Data 路径 在使用 Selenium 打开指定 ...
本文将详细介绍如何使用Python结合Selenium实现网页自动化抓取,并介绍如何与BeautifulSoup、MongoDB等工具协同工作,提高数据处理效率。 #### 二、Python Selenium简介 ##### 2.1 Selenium简介 Selenium是一个...