有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java selenium webdriverXpath不适用于列表

我需要从Excel文件中选择数据。这里我使用的是关键字驱动的框架。这是HTML代码

<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix">
<div id="addDialog" class="hidden ui-dialog-content ui-widget-content" style="display: block; width: auto; min-height: 30px; height: auto; max-height: 351.05px; overflow-y: auto;">
<div class="field-container">
<fieldset class="field-container">
<legend>Contracts:</legend>
<a class="select-all" href="#">Select All</a>
<a class="deselect-all" href="#">Deselect All</a>
<select id="addContract" class="searchable" multiple="multiple" style="position: absolute; left: -9999px;">
<option value="93370956">93370956</option>
<option value="93796167">93796167</option>
<option value="94203239">94203239</option>
</select>
<div id="ms-addContract" class="ms-container">
<div class="ms-selectable">
<input class="search-input" type="text" placeholder="filter" autocomplete="off"/>
<ul class="ms-list" tabindex="-1">
<li id="86355560-selectable" class="ms-elem-selectable">
<span>93370956</span>
</li>
<li id="202890296-selectable" class="ms-elem-selectable">
<span>93796167</span>
</li>
<li id="938848030-selectable" class="ms-elem-selectable">
<span>94203239</span>
</li>
</ul>
</div>

我正在从excel文件发送定义的数据。我尝试了一些代码,但他们没有在某个时间点从excel文件中选择所有数据。代码给了我webElement not found的例外

试试#1

List<WebElement> options = driver.findElements(By.xpath("//ul[@class='ms-list']/li/span[contains(text(),'"+testData+"')]"));
    for (WebElement option : options) {
      if(testData.equals(option.getText()))
        option.click();

试试#2

WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//ul[@class='ms-list']/li/span[contains(text(),'"+testData+"')]"))).click();
If i have 10 data in list and i am reading them from my Excel file it above codes only select 3 or 4 and then gave me exception.

Then i tried with this one:

WebDriverWait wait = new WebDriverWait(driver, 10);
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='ms-addContract']/div[1]/input"))).sendKeys(testData);
    Thread.sleep(5000);
    driver.findElement(By.xpath(".//*[@id='ms-addContract']/div[1]/input")).sendKeys(Keys.ARROW_DOWN,Keys.ARROW_DOWN,Keys.SPACE);
    Thread.sleep(2000);
    //Clear the input text value.
    driver.findElement(By.xpath(".//*[@id='ms-addContract']/div[1]/input")).clear();

它将数据发送到过滤文本框并选择弹出的输入。但这需要时间,如果我不把延迟给我超时异常

请帮忙


共 (0) 个答案