如何在Selenium WebDriver中找到一个项目?



我想用Selenium找到以下项目。每当发生更改时,类的值都会更改。这是在一个复杂的页面(多个 iframe 和其他动态加载的项目(中。唯一唯一的id是itemid,它是动态值和title组合。如果我单击此操作,则会得到另一组新的复杂项目。我是硒的新手。怎么做?

.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"));
    

任何帮助将不胜感激。

尝试

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

创建动态 CSS 选择器。

例如:

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

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

  1. 如果固定部分在启动时 - 使用胡萝卜字符 (^(
  2. 如果固定部件位于中间 - 使用星号 (*(
  3. 如果固定部件位于末尾 - 使用娃娃符号 ($(

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

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

谢谢大家。

相关内容

  • 没有找到相关文章

最新更新