繁体   English   中英

Selenium Webdriver从组合框中选择没有ID的项目

[英]Selenium webdriver selecting items from combobox with no ID

我有个问题。 我需要从组合框中获取一个项目,该项目充满了数据库中的项目,并且没有ID,因此也许有人遇到了此问题,可以为我提供帮助:)

大家好,现在我正在尝试这段代码(对不起,我真的很害怕:/)

boolean text1 = Boolean.valueOf("//*[contains(text(), 'textA')]"); 
boolean text2 = Boolean.valueOf("//*[contains(text(), 'textA')]"); 
int i = 0; 
 do { 
     if (text1 != true){ 
       waitForElement(By.xpath("//div[@onclick='meXpatht()']")).click(); //going to next 
                                                                        //combobox page 
    } else if (text2 == true){ 
       waitForElement(By.xpath("//*[contains(text(), 'textA')]")).click(); //selecting
                                                                          //combo item 
      } else { 
        //not done yet, here will be creation of new reccord
      } 
  i++; 
} 
while (i <= 1000); 

所以有我的代码,我试图通过文本找到我需要的元素,当我找不到一个元素时,我转到下一个组合框页面。

该代码有一个问题,当我加载它时,我现在有一个无限循环。 当我找到所需的文本时,我无法弄清楚如何停止循环。

任何想法如何解决此代码? 还是我在这里做错了什么?

我以为我可以通过break;来停止循环break; 当我找到一个元素,但是没有用。 现在我在想,也许这是因为我在组合框中寻找文字?

有更多选择WebElement对象的方法,而不仅仅是挂钩它们的ID。

您可以在此处检查各种方式,但我建议您专门查看CSS选择器 ,您可以在这种情况下使用它来从具有ID的最近元素中遍历DOM。

我链接的文档中的CSS选择器示例:

WebElement cheese = driver.findElement(By.cssSelector("#food span.dairy.aged"));

如果您对XPath比对CSS更满意,那么也可以使用XPath选择器。

例:

List<WebElement> inputs = driver.findElements(By.xpath("//input"));

由于似乎您正在处理select元素,因此您也可以按照以下方式使用某些内容:

WebElement select = driver.findElement(By.tagName("select"));
List<WebElement> allOptions = select.findElements(By.tagName("option"));
for (WebElement option : allOptions) {
    if("yourDesiredValue".equals(option.getAttribute("value"))){
        option.click();
    }
}

其中"yourDesiredValue"是一个String表示您要选择的option标签的value属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM