Vb.net 单击selenium中的动态链接
我需要单击一个表中的链接,该表的id是动态生成的。我想单击一个链接,该链接基于同一行中某个其他列中的文本。尝试了以下代码,但未成功 selenium.GetValue(//table[@id=TableID]/tbody/tr[td/a/text()='Testing'])) 还尝试使用以下代码 Selenium.click(“xpath=id(TableID)/tbody/tr[td/text()='Testing']//input[@value='Delete']”) 尝试了以下代码,但仅通过指定静态行id起作用Vb.net 单击selenium中的动态链接,vb.net,visual-studio-2010,xpath,selenium,Vb.net,Visual Studio 2010,Xpath,Selenium,我需要单击一个表中的链接,该表的id是动态生成的。我想单击一个链接,该链接基于同一行中某个其他列中的文本。尝试了以下代码,但未成功 selenium.GetValue(//table[@id=TableID]/tbody/tr[td/a/text()='Testing'])) 还尝试使用以下代码 Selenium.click(“xpath=id(TableID)/tbody/tr[td/text()='Testing']//input[@value='Delete']”) 尝试了以下代码,但仅通
Dim NumOfRows As Integer = selenium.GetXpathCount("//table[@id='up']/tbody/tr")
'Dim index As Integer
Dim ReturnValue As Integer
Dim IsFound As Boolean = False
Console.WriteLine(NumOfRows)
For i As Integer = 1 To NumOfRows
Dim strColumnText As String = selenium.GetText("//table[@id='up']/tbody/tr[i]/td[1]")
'selenium.WaitForCondition(strt, 100000)
If (strColumnText = pord) Then
ReturnValue = i
IsFound = True
Exit For
End If
Next
如果我指定精确的行,它将找到元素,但不在循环中工作。如果该值在您应该使用的表格中,请提供帮助
selenium.getTable("tableName.0.1");
其中0为行,1为列(两者均以0为索引)
如果成功,getTable将返回一个字符串:“OK,value”,因此需要去掉OK,部分
更新
添加到user-extensions.js
Selenium.prototype.getTableRows = function(locator) {
/**
* Gets the number of rows in a table.
*
* @param locator element locator for table
* @return number of rows in the table, 0 if none
*/
var table = this.browserbot.findElement(locator);
return table.rows.length.toString();
};
硒RC
// Table Name in inputParams
String[] inputParams = { "tblTryggHuvudlantagare", };
String y = proc.doCommand("getTableRows", inputParams);
String tmpString = y.replace("OK,", "");
// Rows minus headings
int tableRows = Integer.valueOf(tmpString).intValue() - 1;
for (int i = 1; i < tableRows; i++) {
// Your logic here to see if you reached the right row and then click button on same row..
}
//inputParams中的表名
字符串[]inputParams={“tbltrygghuvudlare”,};
字符串y=proc.docomand(“getTableRows”,inputParams);
字符串tmpString=y.replace(“OK,”,“”);
//行减去标题
int tableRows=Integer.valueOf(tmpString).intValue()-1;
对于(int i=1;i
这里您指定的是精确的行和列,但我必须根据“测试”值选择一行,然后单击另一列中同一行上的“删除”按钮。有一次我提出了一个解决方案,在这个方案中,我必须迭代表以找到我的值来获得行号。从那里我猜你现在看到了什么列的删除按钮。。我必须制作一个JavaScript来获取表的大小,因为如果您尝试不存在行,Selenium将抛出异常。将进行查看,看看是否找到了解决方案并将其添加到我的答案中。使用您指定的选项进行了尝试,该选项的代码为:I为Integer=1,numorrows Dim strcolumntable为String=selenium.GetTable(“ctl00\u cphMain\u gvOperatorGroup.I.1”)'selenium.WaitForCondition(strColumnText,100000)如果(strcolumntable=pKey),那么ReturnValue=i IsFound=True如果下一步得到两个代码相同的问题,则结束退出…不通过循环迭代。如果提供静态行值,则可以正常工作,但不会进行迭代。任何帮助plzselenium.GetTable(“ctl00\u cphMain\u gvOperatorGroup.i.1”)都不应该是selenium.GetTable(“ctl00\u cphMain\u gvOperatorGroup.”+i+“.1”),谢谢Stefan。是的,我也尝试过,但从字符串到类型double的转换无效。如果(selenium.GetTable(“Group.”+i+“.1”)=pKeyword),尝试将i作为整数=2到numorrows执行以下操作然后ReturnValue=i IsFound=True Exit For End如果下一步知道我为什么得到这个XPath表达式作为答案,您需要提供一个输入示例。