<div class="left">
<select id="hidebox" class="ays-ignore" size="8">
<ul><option value="103249">260 - OMAHA 30TH ST</option></ul>
<ul><option value="103266">540 - UNION CITY</option></ul>
<ul><option value="3">800 - BETHLEHEM</option></ul>
<ul><option value="103271">430 - DALLAS SOUTH</option></ul>
<ul><option value="103270">410 - DALLAS</option></ul>
<ul><option value="100966">530 - TRACY</option></ul>
<ul><option value="103272">420 - FORT WORTH</option></ul>
<ul><option value="97224">820 - QUAKERTOWN</option></ul>
<ul><option value="103324">520 - SACRAMENTO</option></ul>
</select>
</div>
您好, 我正在尝试点击基于标签“820 - QUAKERTOWN”的元素并且我的方法不正确或我遗漏了某些原因当我逐步通过时,我看到整个列表被返回但是没有点击所需的值。 xpath是正确的,似乎返回正确的记录列表,但没有应用单击。如果我使用Selenium和Java新的错误措辞,我表示歉意。 我排除了驱动程序和获取()网站代码,这些线条并不适合我的问题。如果我使用错误的方法,请建议其他想法。我有点碰壁了。
我的期望是可以使用标签文本点击行,例如“800 - BETHLEHEM”或列表中的任何其他内容。我确实尝试了独特的xpath方法并且它有效,但是当我在其他选项值不同的环境中运行时,我的测试失败了。
感谢您提供的任何帮助。 成功点击的示例,当我使用一个独特的xpath时,由于环境原因,我宁愿不使用它。
package com.usc.uscspace.test.customer;
import org.junit.Assert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.testng.annotations.Test;
import java.util.List;
public class CreateTest extends AbstractTestClass {
final static String legacyWarehouse = "800 - BETHLEHEM";
@Test
public void createCustomerTest() {
List<WebElement> pushWhseList = driver.findElements(By.xpath(".//*[@id='hidebox']"));
int total_node = pushWhseList.size();
for (int i = 0; i < total_node; i++) {
String list = pushWhseList.get(i).getText();
if (list.contains(legacyWarehouse)) {
pushWhseList.get(i).click();
break;
}
}
}
}
答案 0 :(得分:1)
你可以试试这个:
Select mySelect = new Select(driver.findElement(By.xpath(".//*[@id='hidebox']")));
mySelect.selectByVisibleText(legacyWarehouse);
或直接:
driver.findElement(By.xpath(".//ul/option[text()='"+legacyWarehouse+"']")).click()