【问题标题】:Delete button is stuck when using selenium but normally it is working使用 selenium 时删除按钮卡住但通常可以正常工作
【发布时间】:2015-09-09 15:41:44
【问题描述】:

我创建了一个脚本,我想通过该脚本取消发布一个元素,然后删除页面上存在的所有列表。这两个选项都是取消发布和删除。似乎当我们点击图标时(所以当我们点击图标时两个元素都会显示)

现在,当我要单击删除按钮时,应该会出现一个授权弹出窗口,但是当我使用 selenium 时不会发生这种情况,而当我正常使用站点(没有 selenium)时,它工作正常。

每一行都有许多未发布和删除按钮。

我也尝试过使用 JavascriptExecutor 和 Actions

我的代码:-

List<WebElement> unpublishlink1 = d.findElements(By.cssSelector("a.action-publish.action_profile_unpublish"));
        List<WebElement> deletelink1 = d.findElements(By.cssSelector("em.icon16.icon16-delete"));

    WebElement deleted = null;
    for ( WebElement deletelink: deletelink1) {
        WebElement cogiconlink = d.findElement(By.className("device-action-menu-arrow"));
        cogiconlink.click();
        deleted=deletelink; 
    }
    for ( WebElement unpublishlink: unpublishlink1) { 
        while (unpublishlink.isDisplayed() || deleted.isDisplayed()  ) {

        if (unpublishlink.isDisplayed()) {
                unpublishPopup(d,unpublishlink, deleted);

        } else {
            deleteAlert(d,deleted);
        }
        }

        }

    }


public void unpublishPopup(WebDriver d,WebElement unpublishlink,WebElement deleted)
{
    unpublishlink.click();
    d.findElement(By.id("Unpublish_Profile"));
    d.findElement(By.id("UnpublishProfileReason")).sendKeys("lish");
    d.findElement(By.id("UnpublishProfilePassword")).sendKeys("@123");
    d.findElement(By.id("UnpublishProfileYes")).click();
    d.manage().timeouts().implicitlyWait(60000, TimeUnit.MILLISECONDS);
    d.get(d.getCurrentUrl()); 
    deleteAlert(d, deleted);
}

public void deleteAlert(WebDriver d,WebElement deleted)
{
    d.manage().timeouts().implicitlyWait(60000, TimeUnit.MILLISECONDS);
    d.get(d.getCurrentUrl());  
    WebDriverWait wait = new WebDriverWait(d, 10);
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(d.findElement(By.cssSelector("em.icon16.icon16-delete"))));
    WebElement deleteLink=d.findElement(By.cssSelector("em.icon16.icon16-delete"));
    deleteLink.click();
    //JavascriptExecutor executor = (JavascriptExecutor) d;
    //executor.executeScript("arguments[0].click();", deleteLink);
    d.switchTo().alert().accept();
    d.manage().timeouts().implicitlyWait(60000, TimeUnit.MILLISECONDS);
    d.get(d.getCurrentUrl()); 
    System.out.println("going out");
    try{
        Thread.sleep(5000);
    }
    catch(Exception ex)
    {
        System.out.println(ex.getMessage());
    }
}

我的 HTML 代码:-

图标代码:-

<div class="device-action-menu">
<div class="device-action-menu-placeholder"></div>
<span class="device-action-menu-arrow"></span>
<ul class="device-action-menu-ul">

取消发布按钮代码:-

            <li><a href="javascript:;" class="action-publish action_profile_unpublish" profilename="Test_Agent_1_Cleinrt" profileid="1764" rel="https://mysite/profilec/profileunpublish/1764" title="Unpublish Profile"><em class="icon16 icon16-wipe"></em></a></li>

删除按钮代码:-

   <li><a href="javascript:;" class="action-delete delete_action" rel="https://mysite/profilec/delete/1434" title="Delete Profile"><em class="icon16 icon16-delete"></em></a></li>

【问题讨论】:

  • 您返回的错误是什么?它是否无法单击或已启动操作并且没有任何反应?我已经发布了一个可能会有所帮助的答案,因为我遇到了类似的问题。

标签: selenium selenium-webdriver webdriver


【解决方案1】:

你可以试试这个吗:

JavascriptLibrary jsLib = new JavascriptLibrary();
jsLib.callEmbeddedSelenium(driver,"triggerMouseEventAt", element,"click", "0,0");**

【讨论】:

  • 感谢分享新的点击方式,但它也不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-08
  • 2014-12-02
  • 2015-02-03
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多