首页 文章

无法找到没有ID的按钮; Button具有隐藏的属性值

提问于
浏览
0

我正在使用C#和Selenium Web Driver . 问题是我无法找到没有ID值的开始按钮 .

我在这个对象中找到的唯一唯一标识符是'value =“74”'文本 .

按钮的HTML如下:

<div class="product-item-inner">
  <div class="product">
     <h3>Cyber Liability</h3>
     <p class="carrier-about">Lloyd's, London - AM BEST "A" (Excellent)</p>
  </div>
 <form action="/index.php?c=pcs.integrate" method="POST">
    <input value="74" name="product_id" type="hidden">
    <input value="" name="insured_id" type="hidden">
    <input value="" name="contract_class_id" type="hidden">
    <a href="#" class="product-information">Product Information</a>

    <a class="tile-button start" href="#">Start</a>
 </form> 
</div>

我能够使用Firefox IDE执行记录和回放(参见下面的行),但我需要一种方法来使用唯一标识符一致地找到按钮对象 .

driver.FindElement(By.XPath( “(//一个[含有(文本(), '开始')])[16]”))点击();

我尝试了以下但它不起作用:

driver.FindElement(By.XPath( “(//输入[@名称= 'PRODUCT_ID'] [@值= '74' ])”))点击();

提前致谢

5 回答

  • 0

    要单击上面的 'Start' button with respect to the text 'Cyber Liability' ,您可以尝试以下xpath:

    //h3[.='Cyber Liability']/ancestor::div[@class='product-item-inner']//a[.='Start']
    

    这将 a 元素与innerHTML / text定位为 Start ,它是 div 元素的后代节点, class 属性为 product-item-inner ,它是 h3 元素的祖先,innerHTML / text为 Cyber Liability .

  • 0

    您无法单击隐藏的元素 . 如果你想找到隐藏元素旁边的开始链接,你可以这样做:

    //a[..\input[@name='product_id'][@value='74']]
    
  • 0

    元素最重要的属性是href属性,它指示链接的目标 . 你可以像这样使用它:

    driver.findElement(By.linkText("Start")).click();
    
  • 0

    您可以尝试使用CssSelector找到开始按钮 .

    driver.FindElement(By.CssSelector(".tile-button.start")).Click();
    
  • 0

    Subh的这个解决方案奏效了 .

    //h3 [ . ='Cyber Liability'] / ancestor :: div [@ class ='product-item-inner'] // a [ . ='Start']

相关问题