我不明白为什么这个操作不起作用。我正在测试的Web应用程序有一个弹出框,点击按钮后会生成。此弹出框包含一个表格,其中每行都可点击。我尝试了多种实现方法,包括操作、表格行选择等,但都无效。该元素对Selenium可见,但无法单击它。也没有抛出任何错误。
附加说明:我已经检查了其他元素的Action方法,它确实有效,所以必须是使用的选择器或如何看待它的问题。非常奇怪的行为。我还在Firefox中使用Selenium IDE检查过它,并且weblement.click()可以在CSS选择器上正常工作。
附加说明:我已经检查了其他元素的Action方法,它确实有效,所以必须是使用的选择器或如何看待它的问题。非常奇怪的行为。我还在Firefox中使用Selenium IDE检查过它,并且weblement.click()可以在CSS选择器上正常工作。
public class ContactDetails {
WebDriver driverInstance;
public ContactDetails(WebDriver driver){
this.driverInstance = driver;
}
public void enterContactDetails(){
//Other code here...
By validAddress = By.cssSelector("#customerAddress > tbody > tr:nth-child(1) > td");
//Validate that the element is visible. Definitely working as intended because I use it elsewhere in the code successfully.
if (Helper.checkElementVisible(driverInstance, validAddress)){
//if visible:
WebElement selectAddress = driverInstance.findElement(validAddress);
//Helper.scrollToElementAndClick(driverInstance, selectAddress);
Actions actions = new Actions(driverInstance);
actions.moveToElement(selectAddress).click().perform();
}
}
}
辅助类:
public class Helper {
public static void scrollToElementAndClick(WebDriver driver, WebElement webelement){
Actions actions = new Actions(driver);
actions.moveToElement(webelement).click().perform();
}
最奇怪的是,我使用这种实现方式时几次都能正常运行。然后我将Actions代码放入现在被注释掉的Helper.scrollToElementAndClick()
方法中,结果它停止工作了。当我回到这种实现方式时,它也不能工作了!
我不能发布弹出窗口的图像,因为那会泄露敏感信息,但以下是带有虚假数据的弹出窗口示例HTML:
<div class="someDiv" tabindex="-1" role="dialog" aria-labelledby="ui-1"
style="height: auto; width: 600px; top: 175px; left: 364px; display: block;">
<div class="anotherDiv">
<span id="ui-1" class="ui-title"></span>
<button class="ui-title-close" role="button" aria-disabled="false" title="close">
<span>close</span>
</button>
</div>
<div id="validateCustomerAddress" class="ui-content" style="width: auto; min-height: 0px; max height: none; height: 230px;">
<h2 class="aSection" style="color:#666666">Valid Addresses:</h2>
<table id="customerAddress">
<tbody>
<tr>
<td>ZIP CODE: N/A</td>
</tr>
<tr>
<td>2 POPLAR WAY</td>
</tr>
<tr>
<td>KINSEY DRIVE</td>
</tr>
</tbody>
</table>
</div>
</div>