我无法点击模态内的提交按钮。它有时只能起作用 - 它不稳定。
以下是我的HTML元素:
<button id="submit-btn" name="submit" data-dismiss="modal" type="submit" class="btn btn-info btn-sm submit projectSaveBtn">Submit</button>
我在这里使用id
来查找元素,但我无法点击模态中的提交按钮。
我的Java代码:
WebElement element1 = driver.findElement(By.id("submit-btn"));
Actions actions = new Actions(driver);
actions.moveToElement(element1).build().perform();
wait.until(ExpectedConditions.elementToBeClickable(element1)).click();
答案 0 :(得分:2)
当我们使用动作类时,selenium会使用鼠标和键盘控件。如果我们在测试执行时与鼠标或键盘交互(特别是动作语句执行),它可能会失败一些。
您可以尝试使用操作类,并且在完成测试执行之前不要进行交互。它可以解决你的问题。
答案 1 :(得分:1)
您可以使用boolean isShown = false;
mRecyclerViewList.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Logger.log("Call");
if(!isShown){
TextView textView = (TextView) mRecyclerViewList.getChildAt(0).findViewById(R.id.txt_add_tocart_btn);
Logger.log("Textview" + textView);
textView.setFocusableInTouchMode(true);
TutoShowcase.from((Activity) context).setContentView(R.layout.tuto_showcase_tuto_sample)
.setFitsSystemWindows(true).on(textView).addRoundRect(35).showOnce("1").show();
isShown = true;
}
// unregister listener (this is important)
if (Build.VERSION.SDK_INT < 16) {
mRecyclerViewList.getViewTreeObserver().removeGlobalOnLayoutListener(this);
} else {
mRecyclerViewList.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
}
});
,而不是使用id
属性,如下所示:
xpath
或
WebElement element1 = driver.findElement(By.xpath("//button[@id='submit-btn']"));
element1.click();
答案 2 :(得分:1)
如果是Windows模式对话框,您可能需要先switchTo()
到模态,然后对其执行accept()
。
driver.switchTo().alert().accept();
driver.switchTo().window("");
答案 3 :(得分:0)
我解决了这个问题,这是时间问题.Modal在页面正确加载之前打开,所以在点击/打开模式之前给出时间解决问题。
这是我的代码 - &gt;
acc = itertools.accumulate([3] + x)
next(acc) # discard the extra 3 at the start of the output.
y = list(acc)
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement add = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.btn.projectAddBtn")));
这解决了我的问题。谢谢大家的支持: - )