【问题标题】:How to find an item in Selenium WebDriver?如何在 Selenium WebDriver 中查找项目?
【发布时间】:2018-05-05 03:59:39
【问题描述】:

我想使用 Selenium 找到以下项目。只要有变化,类的值就会发生变化。这是一个复杂的页面(多个 iframe 和其他动态加载的项目)。唯一的唯一id是itemid,是动态值和title的组合。如果我单击此操作,我将获得另一组新的复杂项目。我是 Selenium 的新手。该怎么做?

HTML:

<td itemid="xxyyy.as123" title="Actions" nowrap="" class="text-button">Actions&nbsp;<img src="../row.gif"></td>

<td itemid="xxyyy.as123" title="Actions" nowrap="" class="text-button button-active">Actions&nbsp;<img src="../row.gif"></td>

<td itemid="xxyyy.as123" title="Actions" nowrap="" class="text-button button-hover">Actions&nbsp;<img src="../row.gif"></td>

我试过的代码:

  1. 通过 Xpath 查找

    var element=driver.FindElement(By.XPath("html/body/div[id='pageContent']/iframe/#document/ht‌ml/frameset/frame[name='detailsDisplay']/#document/html/body/form[name='tableForm‌']/div[id='divToolbarContainer']/div[id='divToolbar']/div[1][class='toolbar']/tab‌​le/tbody/tr/td[title='Actions']"));
    
  2. 按链接文本查找

    var element = driver.FindElement(By.LinkText("Actions"));
    

任何帮助将不胜感激。

【问题讨论】:

  • 在切换到正确的帧之前,您无法对元素执行任何操作。
  • 这个页面有大约 10 个 iframe 和其他元素。如何获得正确的框架?
  • 帧是动态变化的吗?
  • 您要点击的元素是在哪个iframe下?至少是静态的吗?
  • 进入网页是动态更新的。

标签: selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

试试

 By.CssSelector("td[title="Actions"]");
 By.CssSelector("td[itemid="xxyyy.as123"]");
 By.CssSelector("td[itemid="xxyyy.as123"][title="Actions"]")

【讨论】:

    【解决方案2】:

    创建动态 CSS 选择器。

    例如:

    driver.FindElement(By.CssSelector("td[itemid$="xxyyy."]")).Click(); 
    

    注意:在动态元素中,总是有一部分定位器是固定的。我们需要使用这部分来生成定位器。

    1. 如果固定部分在开始 - 使用胡萝卜字符 (^)
    2. 如果固定部分位于中间 - 使用星号 (*)
    3. 如果固定部分在末端 - 使用 Doller 符号 ($)

    【讨论】:

    • 全是数字。所以没有线索。
    【解决方案3】:

    最后我能够通过使用框架名称来实现它。

     driver.SwitchTo().Frame("content").SwitchTo().Frame("detailsDisplay");                        
     var element = driver.FindElement(By.XPath("//*[@id=\"divToolbar\"]/div[1]/table/tbody/tr/td[1]"));
    

    谢谢大家。

    【讨论】:

      猜你喜欢
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2021-12-24
      相关资源
      最近更新 更多