gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:56:49 28 4
gpt4 key购买 nike

我有一个问题。我需要从组合框中获取一个项目,其中填充了数据库中的项目,并且它们没有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; 停止循环,但它不起作用。现在我在想,也许这是因为我正在组合框中查找文本?

最佳答案

选择 WebElement 对象的方法有很多,而不仅仅是 Hook 其 ID。

您可以通过多种方式查看HERE但我建议您专门查看 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”是一个字符串,表示您要选择的option标记的值属性。

关于java - Selenium Webdriver 从没有 ID 的组合框中选择项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22956156/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com