Selenium - webDriver不稳定 - 错误堆栈跟踪

时间:2018-01-12 06:59:01

标签: java selenium selenium-webdriver

我无法点击模态内的提交按钮。它有时只能起作用 - 它不稳定。

以下是我的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();

4 个答案:

答案 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")));

这解决了我的问题。谢谢大家的支持: - )