更改了拖入的DLL显示名称

尝试添加了web自动化测试(基于Selenium)
This commit is contained in:
fengjiayi
2024-08-05 19:43:57 +08:00
parent 989a2c0800
commit 5b15871f65
37 changed files with 700 additions and 80 deletions

View File

@@ -1,4 +1,5 @@
using System.Reflection;
using System;
using System.Reflection;
using System.Runtime.InteropServices;
namespace Serein.DynamicFlow.SerinExpression
@@ -72,8 +73,10 @@ namespace Serein.DynamicFlow.SerinExpression
public T Value { get; set; }
public T RangeStart { get; set; }
public T RangeEnd { get; set; }
public string ArithmeticExpression { get; set; }
public override bool Evaluate(object obj)
{
if (obj is T typedObj)
@@ -179,8 +182,10 @@ namespace Serein.DynamicFlow.SerinExpression
}
public Operator Op { get; set; }
public string Value { get; set; }
public override bool Evaluate(object obj)
{
if (obj is string strObj)
@@ -221,7 +226,9 @@ namespace Serein.DynamicFlow.SerinExpression
public ValueTypeConditionResolver<T>.Operator Op { get; set; }
public object? TargetObj { get; set; }
public T Value { get; set; }
public string ArithmeticExpression { get; set; }
public override bool Evaluate(object? obj)
{
//object? memberValue = GetMemberValue(obj, MemberPath);
@@ -259,10 +266,14 @@ namespace Serein.DynamicFlow.SerinExpression
public class MemberStringConditionResolver : ConditionResolver
{
public string MemberPath { get; set; }
public StringConditionResolver.Operator Op { get; set; }
public string Value { get; set; }
public override bool Evaluate(object obj)
{
object memberValue = GetMemberValue(obj, MemberPath);
@@ -282,7 +293,9 @@ namespace Serein.DynamicFlow.SerinExpression
string[] members = memberPath[1..].Split('.');
foreach (var member in members)
{
if (obj == null) return null;
Type type = obj.GetType();
PropertyInfo? propertyInfo = type.GetProperty(member);
FieldInfo? fieldInfo = type.GetField(member);
@@ -293,7 +306,9 @@ namespace Serein.DynamicFlow.SerinExpression
else
throw new ArgumentException($"Member {member} not found in type {type.FullName}");
}
return obj;
}
@@ -308,7 +323,9 @@ namespace Serein.DynamicFlow.SerinExpression
{
return part.Substring(startIndex + 1, endIndex - startIndex - 1);
}
return null;
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Globalization;
using System.Linq;
using System.Reflection;
namespace Serein.DynamicFlow.SerinExpression;
@@ -10,7 +11,9 @@ public class SerinConditionParser
{
try
{
return ConditionParse(data, expression).Evaluate(data);
}
catch (Exception ex)
{
@@ -30,10 +33,12 @@ public class SerinConditionParser
return ParseSimpleExpression(data, expression);
}
bool ContainsArithmeticOperators(string expression)
{
return expression.Contains('+') || expression.Contains('-') || expression.Contains('*') || expression.Contains('/');
}
}
private static string GetArithmeticExpression(string part)
@@ -44,7 +49,9 @@ public class SerinConditionParser
{
return part.Substring(startIndex + 1, endIndex - startIndex - 1);
}
return null;
}
private static object? GetMemberValue(object? obj, string memberPath)
{
@@ -81,7 +88,9 @@ public class SerinConditionParser
{
memberPath = operatorStr;
targetObj = GetMemberValue(data, operatorStr);
type = targetObj.GetType();
operatorStr = parts[1].ToLower();
valueStr = string.Join(' ', parts.Skip(2));
}
@@ -105,14 +114,16 @@ public class SerinConditionParser
valueStr = string.Join(' ', parts.Skip(1));
}
targetObj = GetMemberValue(data, memberPath);
Type tempType = typeStr switch
Type? tempType = typeStr switch
{
"int" => typeof(int),
"double" => typeof(double),
"bool" => typeof(bool),
"string" => typeof(string),
_ => Type.GetType(typeStr)
};
type = (tempType ?? Type.GetType(typeStr)) ?? throw new ArgumentException("对象表达式无效的类型声明");
type = tempType ?? throw new ArgumentException("对象表达式无效的类型声明");
}

View File

@@ -92,7 +92,9 @@ namespace Serein.DynamicFlow.SerinExpression
.Select((p, index) => Convert.ChangeType(parameters[index], p.ParameterType))
.ToArray();
return method.Invoke(target, parameterValues);
}
private static object GetMember(object target, string memberPath)
@@ -100,19 +102,25 @@ namespace Serein.DynamicFlow.SerinExpression
var members = memberPath.Split('.');
foreach (var member in members)
{
if (target == null) return null;
var property = target.GetType().GetProperty(member);
if (property != null)
{
target = property.GetValue(target);
}
else
{
var field = target.GetType().GetField(member);
if (field != null)
{
target = field.GetValue(target);
}
else
{
@@ -121,7 +129,9 @@ namespace Serein.DynamicFlow.SerinExpression
}
}
return target;
}
private static object SetMember(object target, string assignment)
@@ -139,17 +149,23 @@ namespace Serein.DynamicFlow.SerinExpression
for (int i = 0; i < members.Length - 1; i++)
{
var member = members[i];
var property = target.GetType().GetProperty(member);
if (property != null)
{
target = property.GetValue(target);
}
else
{
var field = target.GetType().GetField(member);
if (field != null)
{
target = field.GetValue(target);
}
else
{
@@ -159,7 +175,9 @@ namespace Serein.DynamicFlow.SerinExpression
}
var lastMember = members.Last();
var lastProperty = target.GetType().GetProperty(lastMember);
if (lastProperty != null)
{
var convertedValue = Convert.ChangeType(value, lastProperty.PropertyType);