使用硒时删除按钮卡住但正常工作

Delete button is stuck when using selenium but normally it is working

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

现在,当我要单击删除按钮时,应该会出现一个授权弹出窗口,但是当我使用 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>

你能试试这个吗:

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