c#:开关箱:如果(箱:)
这个问题对你们中的一些人来说可能很熟悉,他们回答或查看了我之前关于休息的问题;陈述如果案例1满意,我想做点什么,如果案例2满意,我想做点别的。类似下面的内容。有谁能指导我(如果可行的话)如何实现我想要做的事情,而不必将if语句放在switch case中c#:开关箱:如果(箱:),c#,selenium,switch-statement,C#,Selenium,Switch Statement,这个问题对你们中的一些人来说可能很熟悉,他们回答或查看了我之前关于休息的问题;陈述如果案例1满意,我想做点什么,如果案例2满意,我想做点别的。类似下面的内容。有谁能指导我(如果可行的话)如何实现我想要做的事情,而不必将if语句放在switch case中 switch (searchType) { case "SearchBooks": Selenium.Type("//*[@id='SearchBooks_
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
你做得再好不过了
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
如果两种情况唯一的共同点是
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
那我就写两遍
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
int count;
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
//do something
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
//do something else
break;
}
如果这两种情况的唯一共同点是
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
那我就写两遍
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
int count;
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
//do something
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
//do something else
break;
}
searchType将包含您需要的值
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
因此,您可以拥有当前案例陈述,然后编写
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
if (searchType == "SearchBooks")
// do something
else if (searchType == "SearchAuthors")
// do something else
searchType将包含您需要的值
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
因此,您可以拥有当前案例陈述,然后编写
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
if (searchType == "SearchBooks")
// do something
else if (searchType == "SearchAuthors")
// do something else
Action-myAction;
开关(搜索型)
{
案例“搜索簿”:
Selenium.Type(“/*[@id='SearchBooks\u TextInput']”,searchText);
Selenium.Click(“//*[@id='SearchBooks\u SearchBtn']”);
//分配自定义操作
myAction=count=>{/*计数为count*/};
打破
“搜索作者”一案:
Selenium.Type(“/*[@id='SearchAuthors\u TextInput']”,searchText);
Selenium.Click(“//*[@id='SearchAuthors\u SearchBtn']”);
//分配自定义操作
myAction=count=>{/*计数为count*/};
打破
违约:
抛出新的NotSupportedException();
}
int count=int(Selenium.GetXpathCount(“/[@id='Results\u Table']);
//调用自定义操作
我的行动(计数);
动作我的动作;
开关(搜索型)
{
案例“搜索簿”:
Selenium.Type(“/*[@id='SearchBooks\u TextInput']”,searchText);
Selenium.Click(“//*[@id='SearchBooks\u SearchBtn']”);
//分配自定义操作
myAction=count=>{/*计数为count*/};
打破
“搜索作者”一案:
Selenium.Type(“/*[@id='SearchAuthors\u TextInput']”,searchText);
Selenium.Click(“//*[@id='SearchAuthors\u SearchBtn']”);
//分配自定义操作
myAction=count=>{/*计数为count*/};
打破
违约:
抛出新的NotSupportedException();
}
int count=int(Selenium.GetXpathCount(“/[@id='Results\u Table']);
//调用自定义操作
我的行动(计数);
根据您不想将代码包含在案例陈述中的原因,您可以通过多种不同的方式来实现这一点。其他回答者有很好的建议。在我看来,这段代码是在呼吁采用面向对象的方法:
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
var search = GetSearch(searchType);
search.PerformSearch(searchText);
int count = (int)Selenium.GetXpathCount("//[@id='Results_Table']");
search.DoSomething(count);
...
public ISearch GetSearch(string searchType)
{
switch (searchType)
{
case "SearchBooks": return new SearchBooks();
case "SearchAuthors": return new SearchAuthors();
default:
throw new ArgumentException(
string.Format("Invalid searchtype \"{0}\"", searchType),
"searchType");
}
}
public interface ISearch
{
void PerformSearch(string searchText);
void DoSomething();
}
public class SearchBooks : ISearch
{
public void PerformSearch(string searchText)
{
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
}
void DoSomething()
{
// do something
}
}
public class SearchAuthors : ISearch
{
public void PerformSearch(string searchText)
{
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
}
void DoSomething()
{
// do something else
}
}
根据您不想在案例陈述中包含代码的原因,您可以通过多种不同的方式来实现这一点。其他回答者有很好的建议。在我看来,这段代码是在呼吁采用面向对象的方法:
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
var search = GetSearch(searchType);
search.PerformSearch(searchText);
int count = (int)Selenium.GetXpathCount("//[@id='Results_Table']");
search.DoSomething(count);
...
public ISearch GetSearch(string searchType)
{
switch (searchType)
{
case "SearchBooks": return new SearchBooks();
case "SearchAuthors": return new SearchAuthors();
default:
throw new ArgumentException(
string.Format("Invalid searchtype \"{0}\"", searchType),
"searchType");
}
}
public interface ISearch
{
void PerformSearch(string searchText);
void DoSomething();
}
public class SearchBooks : ISearch
{
public void PerformSearch(string searchText)
{
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
}
void DoSomething()
{
// do something
}
}
public class SearchAuthors : ISearch
{
public void PerformSearch(string searchText)
{
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
}
void DoSomething()
{
// do something else
}
}
但是,我不明白为什么在switch语句中添加功能不符合您的需要
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
但是,我不明白为什么在switch语句中添加功能不符合您的需要?如果您希望有两组switch语句,请首先将字符串强制转换为枚举,然后从那里继续
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
如果你有兴趣这样做,我可以进一步填写答案。让我知道
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
public enum SearchTypeEnum{None,SearchBooks,SearchAuthors}
var searchType = (SearchTypeEnum)Enum.Parse(typeof(SearchTypeEnum), searchTypeString);
switch (searchType){
case SearchTypeEnum.SearchBooks:
...
switch (searchType){
case SearchTypeEnum.SearchBooks:
...
为了清楚起见,如果您希望有两组switch语句,请首先将字符串强制转换为枚举,然后再从那里开始
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
如果你有兴趣这样做,我可以进一步填写答案。让我知道
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
public enum SearchTypeEnum{None,SearchBooks,SearchAuthors}
var searchType = (SearchTypeEnum)Enum.Parse(typeof(SearchTypeEnum), searchTypeString);
switch (searchType){
case SearchTypeEnum.SearchBooks:
...
switch (searchType){
case SearchTypeEnum.SearchBooks:
...
叫我极客吧。:)
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
并保存案例陈述
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
现在,很明显,只有当searchType值始终对应于实际的元素ID时,这才有效。叫我geek.)
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
并保存案例陈述
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}
显然,只有当searchType值始终对应于实际的元素ID时,这才有效。或者可能调用公共方法。@Gebb:如果公共行很复杂,或者不止一行,则公共方法可能会有所帮助。但是,只要这么简单,一个方法调用所带来的复杂性就比它所消除的要大。或者可以调用一个公共方法。@Gebb:如果公共行很复杂,或者不止一行,那么一个公共方法可能会有帮助。但是,只要它这么简单,方法调用就会引入比它所移除的复杂度更高的复杂性。
int(Selenium.GetXpathCount(“/[@id='Results\u Table']”)
?你是说(int)Selenium.GetXpathCount(“/[@id='Results\u Table']”)
?是的,谢谢你纠正我。int(Selenium.GetXpathCount(“/[@id='Results\u Table'])
?你的意思是(int)Selenium.GetXpathCount(“/[@id='Results\u Table']”)吗?
?是的,谢谢你纠正我。正如这里的许多其他答案所示,显然你可以做得更好。:)但只有重新设计方法的其余部分。正如这里的许多其他答案所示,显然你可以做得更好。:)但只需重新设计方法的其余部分。Selenium.Type(string.Format(“{0}\u TextInput”,searchType),searchText);Selenium.Click(string.Format(“{0}\u SearchBtn”,searchType));将工作到seenium.Type(string.Format(“{0}\u TextInput”,searchType),searchText);Selenium.Click(string.Format(“{0}\u SearchBtn”,searchType));这也行
switch (searchType)
{
case "SearchBooks":
Selenium.Type("//*[@id='SearchBooks_TextInput']", searchText);
Selenium.Click("//*[@id='SearchBooks_SearchBtn']");
break;
case "SearchAuthors":
Selenium.Type("//*[@id='SearchAuthors_TextInput']", searchText);
Selenium.Click("//*[@id='SearchAuthors_SearchBtn']");
break;
}
int count = int(Selenium.GetXpathCount("//[@id='Results_Table']");
if case was "SearchBooks"
{
//do something
}
else if case was "SearchAuthors"
{
//do something else
}