Selenium - Java - 元素获取单击但不执行操作

时间:2018-04-05 10:26:38

标签: java selenium selenium-webdriver xpath webdriver

自动化方面很陌生,直到现在才出现问题

我有一个按钮,一旦点击,会出现一个弹出按钮,可以点击它,它会执行某个动作。

我到了第二个按钮,它似乎点击它,但它没有执行相关的操作

我的代码

//First Button//
WebElement AddUserSelect =  
chromeDriver.findElementBy.id(
    "j_idt67:j_idt68:j_idt69:j_idt229:pendingTable:dataTable:0:j_idt280_menuButton"));

AddUserSelect.click();

try {
    Thread.sleep(1000L);
} catch (InterruptedException e) {
    e.printStackTrace();
} 

// Second Button//
WebElement AddUser = 

chromeDriver.findElement(By.id(
    "j_idt67:j_idt68:j_idt69:j_idt229:pendingTable:dataTable:0:j_idt281"));
AddUser.click();  

我检查时页面上的元素

<a 
    id="j_idt67:j_idt68:j_idt69:j_idt229:pendingTable:dataTable:0:j_idt281" 
    class="ui-menuitem-link ui-corner-all" href="#" 
    onclick="PrimeFaces.ab({s:&quot;j_idt67:j_idt68:j_idt69:j_idt229:pendingTable:dataTable:0:j_idt281&quot;,p:&quot;j_idt67&quot;,u:&quot;j_idt67&quot;,f:&quot;j_idt67&quot;});return false;"
>
    <span class="ui-menuitem-icon ui-icon ui-icon-extlink"></span>
    <span class="ui-menuitem-text">
        Add
    </span>
</a>

任何帮助都会受到赞赏。谢谢你

1 个答案:

答案 0 :(得分:1)

根据您所共享的 HTML ,您可以定位第二个内部范围标记,并可以使用以下定位器策略来点击目标元素:

chromeDriver.findElement(By.xpath("//a[@class='ui-menuitem-link ui-corner-all' and starts-with(@id,'j_idt')]//span[@class='ui-menuitem-text']")).click();

更新A

根据您的评论更新,因为上一行代码找到了该元素,但无法操作作为替代,您可以使用 Javascript Click ,如下所示:

WebElement elem = chromeDriver.findElement(By.xpath("//a[@class='ui-menuitem-link ui-corner-all' and starts-with(@id,'j_idt')]//span[@class='ui-menuitem-text']"));
driver.executeScript("arguments[0].click();", elem);

更新B

通过 WebDriverWait 诱导服务员,如下所示:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//a[@class='ui-menuitem-link ui-corner-all' and starts-with(@id,'j_idt')]//span[@class='ui-menuitem-text']"))).click();