Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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
单击与其他图像具有相同src且Selenium中没有href的相同图像_Selenium_Selenium Webdriver_Css Selectors - Fatal编程技术网

单击与其他图像具有相同src且Selenium中没有href的相同图像

单击与其他图像具有相同src且Selenium中没有href的相同图像,selenium,selenium-webdriver,css-selectors,Selenium,Selenium Webdriver,Css Selectors,我在一个类似表格的结构中有3行,其中一个图像作为所有3行的编辑按钮分别显示,但完全相同。要编辑该行,我需要单击该图像,但它具有以下属性:并且该id(1526885146519)是动态的。我需要逐个单击所有编辑按钮。我应该如何单击它们 <img src="../../../Intranet/Images/if_edit_173002.png" onclick="fnEditRow(1526885146519);" style="cursor: pointer; mar

我在一个类似表格的结构中有3行,其中一个图像作为所有3行的编辑按钮分别显示,但完全相同。要编辑该行,我需要单击该图像,但它具有以下属性:并且该id(1526885146519)是动态的。我需要逐个单击所有编辑按钮。我应该如何单击它们

<img src="../../../Intranet/Images/if_edit_173002.png" 
     onclick="fnEditRow(1526885146519);" 
     style="cursor: pointer; margin-right: 3px; margin-left: 3px; wdith; width:18px; height:18px;" 
     title="Eidt Item">

表行HTML属性-

G450A1SK1200A00G450A1SK1200A00E-Active1668.70668.700.00待定 FRSM15062411200FRSM15062411200E-ACTIVE13107.003107.000.00待定 31021200L--31021200E-ACTIVE16.406.400.00待定

您可以使用
x-path
css选择器来定位它们

可能的XPath是

//img[@src="../../../Intranet/Images/if_edit_173002.png"]
//img[@src="../../../Intranet/Images/if_edit_173002.png" and @title="Edit Item"]
//img[@title="Edit Item"]
//img[starts-with(@onclick,'fnEditRow')]
css选择器

img[src="../../../Intranet/Images/if_edit_173002.png"]
img[title="Edit Item"]
或者,如果它位于table标记下,则可以使用x路径,如

//table/tr/td[last()]/img

您可以使用web驱动程序的“查找元素”来获取所有元素并按如下所示循环它

我在这里使用java

List<WebElement> lstElements = driver.findElements(By.xpath("//img[@title=\"Edit Item\"]");
for(WebElement ele:lstElements){
   ele.click();
   //do other stuffs
}

请读一读为什么会这样。考虑使用格式化的基于文本的相关HTML、代码试验和错误堆栈跟踪更新问题。它将具有比IDID更多的属性。共享该页面的HTML源代码,以便有人可以帮助您。HTMLpropery@DebanjanB-屏幕截图不是错误或代码,它是一个应用程序,让您了解它的外观。@Samira,
目录号似乎是唯一的,您可以通过它找到该行,然后在该行中找到“编辑”按钮。如果这个解决方案是可以接受的,请显示HTML代码的表格,如果我采取这样的东西//img[@title=“Edit Item”]或//img[以(@onclick,'fnEditRow')开头]它将始终使用第一个编辑按钮。我想在不同的行中逐个单击所有3个编辑按钮。使用“查找元素”并循环它。或者使用索引来获取特定的元素
(//img[@src="../../../Intranet/Images/if_edit_173002.png"])[1] -- first edit button

(//img[@src="../../../Intranet/Images/if_edit_173002.png"])[2] -- second edit button

(//img[@src="../../../Intranet/Images/if_edit_173002.png"])[3] -- third edit button