Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单击特定行中的按钮_C#_Selenium_Selenium Webdriver - Fatal编程技术网

C# 单击特定行中的按钮

C# 单击特定行中的按钮,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,我目前有一个测试,在下表中添加一个条目,生成一个随机位置名和值。我现在尝试单击表中的编辑图标 我可以使用单元格找到正确的位置名称- string editButton = "//td[text(),'"+locationName+ "']; driver.FindElement(By.XPath(editButton)).Click(); 但不知道如何从这里点击编辑按钮 按钮的HTML是- <tr id="officeRechargeGrid_DXDataRow1" class="dx

我目前有一个测试,在下表中添加一个条目,生成一个随机位置名和值。我现在尝试单击表中的编辑图标

我可以使用单元格找到正确的位置名称-

string editButton = "//td[text(),'"+locationName+ "'];
driver.FindElement(By.XPath(editButton)).Click();
但不知道如何从这里点击编辑按钮

按钮的HTML是-

<tr id="officeRechargeGrid_DXDataRow1" class="dxgvDataRow_Office2010Silver" style="">
    <td class="dxgvCommandColumn_Office2010Silver dxgv" align="center"><a class="dxbButton_Office2010Silver dxgvCommandColumnItem_Office2010Silver dxgv__cci dxbButtonSys" data-args="[['StartEdit',1],1]" id="officeRechargeGrid_DXCBtn3" href="javascript:;" style="font-size: 0pt;"><img title="Edit" class="dx-vam" src="/Images/editgray.png" alt="Edit" style="height:16px;width:16px;" id="officeRechargeGrid_DXCBtn3Img"></a><script id="dxss_1145064087" type="text/javascript" data-executed="true">

表格的HTML是-
/-->
位置
假定体积
塔波约瓦格49554.00
JKFZICPJA76646.00

首先尝试识别编辑按钮并将其保存在列表中。然后使用loop依次单击它们中的每一个

List<WebElement> trList=driver.findElements(By.xpath("//table[@id='Your table ID here']/tr/td/a/img"));
                          (or)
List<WebElement> trList=driver.findElements(By.xpath("//img[@alt='Edit']"));
            for(int i=0;i<trList.size();i++){
                trList.get(i).click();
            }
List trList=driver.findElements(By.xpath(“//table[@id='Your table id here']]/tr/td/a/img”);
(或)
List trList=driver.findElements(By.xpath(//img[@alt='Edit']);

对于(int i=0;i,首先尝试识别编辑按钮并将其保存在列表中。然后使用循环依次单击每个按钮

List<WebElement> trList=driver.findElements(By.xpath("//table[@id='Your table ID here']/tr/td/a/img"));
                          (or)
List<WebElement> trList=driver.findElements(By.xpath("//img[@alt='Edit']"));
            for(int i=0;i<trList.size();i++){
                trList.get(i).click();
            }
List trList=driver.findElements(By.xpath(“//table[@id='Your table id here']]/tr/td/a/img”);
(或)
List trList=driver.findElements(By.xpath(//img[@alt='Edit']);
对于(int i=0;i请尝试以下xpath:

driver.FindElement(By.XPath("//a[child::img[@title='Edit'] and parent::td[following-sibling::td[text()='" + locationName + "']]]")).Click();
请尝试以下xpath:

driver.FindElement(By.XPath("//a[child::img[@title='Edit'] and parent::td[following-sibling::td[text()='" + locationName + "']]]")).Click();

要单击表中的编辑按钮,可以使用以下代码行:

driver.FindElement(By.XPath("//a[@class='dxbButton_Office2010Silver dxgvCommandColumnItem_Office2010Silver dxgv__cci dxbButtonSys' and @id='officeRechargeGrid_DXCBtn3']")).Click();

要单击表中的编辑按钮,可以使用以下代码行:

driver.FindElement(By.XPath("//a[@class='dxbButton_Office2010Silver dxgvCommandColumnItem_Office2010Silver dxgv__cci dxbButtonSys' and @id='officeRechargeGrid_DXCBtn3']")).Click();

您没有从主表中为我们提供ID(以缩小HTML的范围),因此只需搜索页面上的所有
tr

然后,从表中获取所有行

var rows = driver.FindElements(By.TagName("tr"));
在该集合中,您将搜索所有列,并使用
locationName
将结果缩小到特定行

var desiredRow = rows.Where(row => row.FindElements(By.TagName("td"))[1] == locationName);
现在您有了所需的行,在该行中搜索以找到编辑按钮(我可以看到只有一个定位点,所以最简单的搜索是通过
标记名

如果创建函数的唯一目的是单击编辑按钮,则如下所示:

public void ClickEdit(string locationName)
{
    driver.FindElements(By.TagName("tr"))
        .Where(row => row.FindElements(By.TagName("td"))[1] == locationName).Single()
        .FindElement(By.TagName("a")).Click();
}

您没有从主表中为我们提供ID(以缩小HTML的范围),因此只需搜索页面上的所有
tr

然后,从表中获取所有行

var rows = driver.FindElements(By.TagName("tr"));
在该集合中,您将搜索所有列,并使用
locationName
将结果缩小到特定行

var desiredRow = rows.Where(row => row.FindElements(By.TagName("td"))[1] == locationName);
现在您有了所需的行,在该行中搜索以找到编辑按钮(我可以看到只有一个定位点,所以最简单的搜索是通过
标记名

如果创建函数的唯一目的是单击编辑按钮,则如下所示:

public void ClickEdit(string locationName)
{
    driver.FindElements(By.TagName("tr"))
        .Where(row => row.FindElements(By.TagName("td"))[1] == locationName).Single()
        .FindElement(By.TagName("a")).Click();
}


你能分享按钮的HTML代码吗?@ana刚刚添加了:)你试图传递给xpath的
locationName
是什么?@DebanjanB locationName是出现在“Location”中的字符串列。
locationName
在您共享的HTML中的值是什么?您可以共享按钮的HTML代码吗?@ana并刚刚添加了:)您试图传递给
xpath
locationName
是什么?@DebanjanB locationName是“Location”中显示的字符串列。您共享的HTML中
locationName
的值是多少?刚刚尝试了此操作,但引发了异常-{“无法定位元素://a[child::img[@title='Edit']和parent::td[following sibling::td[text()=RDVDSOLHYF]]”显示包含位置列的完整HTML行。不仅仅是编辑按钮。我刚刚为整个表格添加了html,希望这是帮助书,我错过了locationName周围的撇号。我已经更正了我的答案。现在就试试,效果很好。谢谢你的帮助!刚刚尝试了此操作,但引发了异常-{“无法定位元素://a[child::img[@title='Edit']和parent::td[following sibling::td[text()=RDVDSOLHYF]]]”显示包含位置列的完整html行。不仅仅是编辑按钮。我刚刚为整个表格添加了html,希望这是帮助书,我错过了locationName周围的撇号。我已经更正了我的答案。现在就试试,效果很好。谢谢你的帮助!