如何输入在Selenium webdriver中选择的右键单击选项的名称

时间:2016-07-08 23:35:03

标签: java selenium-webdriver

我的方案是我必须右键单击一个web元素并选择第二个选项,结果创建一个新的子位置,默认情况下,应用程序为新创建的子位置提供一个名称(例如Default(1))。 我的目标是将默认名称更改为自定义名称,即将Default(1)更改为Child(1)。

我已成功右键单击,然后选择第二个选项,但无法将子位置重命名为自定义名称。

html代码如下:

<ul class="rtUL">
    <li class="rtLI rtFirst rtLast">
        <div class="rtTop">
        <ul class="rtUL">
            <li class="rtLI rtLast">
                <div class="rtBot rtSelected">
                    <span class="rtIn">Default (1)</span>
                </div>
            </li>
        </ul>
    </li>
</ul>

我的脚本代码如下:

WebElement rootLocation = driver.findElement(By.xpath("//div[@id='Testlocation']//span[contains(text(),'RL')]"));
Actions action = new Actions(driver);
action.contextClick(RL).build().perform();
WebElement elementOpen = driver.findElement(By.linkText("Create Child"));
elementOpen.click();

请帮忙。

2 个答案:

答案 0 :(得分:0)

使用JavascriptExecutor成功右键单击后,您可以将默认名称更改为自定义名称,如下所示: -

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement el = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//span[contains(text(), 'Default (1)')]")));
((JavascriptExecutor)driver).executeScript("arguments[0].textContent = arguments[1]", el, "Child (1)")

希望在成功右键单击以将新创建​​的子项的文本从Default (1)更改为Child (1)后,它将起作用...:)

答案 1 :(得分:0)

我在frnd的帮助下得到了我的问题的解决方案。

    WebElement newLoc1 =driver.findElement(By.xpath("//span[contains(.,'Default (1)')]"));
    Actions mAction = new Actions(driver);
    mAction.moveToElement(newLoc1);
    mAction.contextClick(newLoc1).build().perform();// This will do right click
    driver.findElement(By.xpath("//span[contains(.,'Click to Rename')]")).click();//This will select the renaming option from the right click options
    driver.findElement(By.xpath("//input[@value='Default (1)']")).sendKeys(Keys.HOME,Keys.chord(Keys.SHIFT,Keys.END),"newloc");//This will delete the Default name ie Default (1) and change the name to a new name ie newloc

`