2016-09-14 91 views
0

我正在尝试在C#中创建适当的XPATH语法,以便从Amazon购物车屏幕中单击删除按钮。购物车中可能有一件物品或多件物品,因此我正在寻找循环删除按钮。我无法通过仅包含单词Delete来找到Delete按钮。我终于说好了让我找到屏幕上的所有按钮。我将遍历它们并使用每个链接中的文本来确定我需要单击哪一个。唯一的问题是,它确实在页面上找到了20个不同的项目((“// input [@ type ='submit']”)),但Text域全部为空。我对这个XPATH语法很陌生,它确实给我带来了问题。任何帮助,将不胜感激。C#Selenium循环通过Span类中的输入按钮XPATH

这里有一些的很多东西我用的相关信息的屏幕截图试图沿:

var links = driver.FindElements(By.XPath("//table[contains(@name, 'ReportViewer_fixedTable')]")); 
var links = driver.FindElements(By.XPath("//css=a[name^='submit.delete']")); 
var links = driver.FindElement(By.CssSelector("table[id*='ReportViewer_fixedTable']")); 
var links = driver.FindElements(By.XPath("//button[@type='submit'][text()='Delete']")); WORKED DIDNT FIND ANYTHING 
var links = driver.FindElements(By.XPath("//input[@type='submit'][contains(text(),'Delete')]")); //WOREKED DIDNT FIND ANYTHING 
var links = driver.FindElements(By.XPath("//input[@type='submit']")); 
var links = driver.FindElements(By.XPath("//div[@class='a-row sc-action-links']/span[@class='a-declarative']")); 

检验从铬: enter image description here

,哪些是我的输出看起来就像当我通过公正环找到//输入[@ type ='submit']。你可以看到文字是空的。对他们来说就是这样。

enter image description here

+0

是否要单击任何特定的删除按钮或获取所有按钮的值? –

+0

//input[starts-with(@name,"submit.delete“)] – derloopkat

回答

1

xpath text()input与欲望文本Delete没有子元素的上下文节点的匹配文本节点孩子。

其实Delete文字出现在输入元素的value属性,所以你应该尽量配合Delete文字与价值属性为@value = 'Delete'

因此,要找到所有使用Xpath尝试下面的按钮删除: -

var deleteButtons = driver.FindElements(By.XPath("//input[@type='submit'][@value='Delete']")); 

或如下使用CssSelector: -

var deleteButtons = driver.FindElements(By.CssSelector("input[type='submit'][value='Delete']")); 

UPDATE: 对于任何可能需要这在未来。这是成品:

var deleteButtons = driver.FindElements(By.CssSelector("input[type='submit'][value='Delete']")); 

     foreach (var link in deleteButtons) 
     { 
      link.Click(); 
     } 
+1

谢谢你,先生。这一个工作就像一个魅力。 var deleteButtons = driver.FindElements(By.CssSelector(“input [type ='submit'] [value ='Delete']”)); – Roro