【发布时间】:2018-04-20 15:54:50
【问题描述】:
<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 使用了错误的措辞,我深表歉意。 我排除了驱动程序和 get() 网站代码,这些行与我的问题无关。如果我使用错误的方法,请提出其他想法。我有点碰壁了。
我的期望是可以使用诸如“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;
}
}
}
}
【问题讨论】:
-
您介意正确格式化您的代码吗?
-
关于 StackOverflow 的大量问题,例如:stackoverflow.com/questions/20138761/…stackoverflow.com/questions/12940592/…
标签: xpath selenium-webdriver css-selectors selenium-chromedriver