www.91084.com

GVKun编程网logo

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?

14

最近很多小伙伴都在问SeleniumWeb驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展java–如何删除C

最近很多小伙伴都在问Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展java – 如何删除Chrome Web驱动程序和IE Web驱动程序的日志、Java 如何强制Selenium WebDriver单击当前不可见的元素?、Java-元素MyElement在点(x,y)不可点击...其他元素将获得点击、javascript – 带角度叠加的量角器/ Selenium,其他元素将获得点击等相关知识,下面开始了哦!

本文目录一览:

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?

我使用了明确的等待,并发出警告:

org.openqa.selenium.WebDriverException:元素在点(36,72)不可单击。其他元素将获得点击:…命令持续时间或超时:393毫秒

如果我使用Thread.sleep(2000)我不会收到任何警告。

@Test(dataProvider = "menuData")public void Main(String btnMenu, String TitleResultPage, String Text) throws InterruptedException {    WebDriverWait wait = new WebDriverWait(driver, 10);    driver.findElement(By.id("navigationPageButton")).click();    try {       wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(btnMenu)));    } catch (Exception e) {        System.out.println("Oh");    }    driver.findElement(By.cssSelector(btnMenu)).click();    Assert.assertEquals(driver.findElement(By.cssSelector(TitleResultPage)).getText(), Text);}

答案1

小编典典

你可以通过以下任一过程解决它们:

1.由于存在JavaScript或AJAX调用而无法单击元素

尝试使用ActionsClass

WebElement element = driver.findElement(By.id("navigationPageButton"));Actions actions = new Actions(driver);actions.moveToElement(element).click().build().perform();

2.由于元素不在视口中,因此无法单击

尝试用于JavascriptExecutor将元素带入视口中:

WebElement myelement = driver.findElement(By.id("navigationPageButton"));JavascriptExecutor jse2 = (JavascriptExecutor)driver;jse2.executeScript("arguments[0].scrollIntoView()", myelement);

3.在元素可单击之前,页面正在刷新。

在这种情况下,请诱导ExplicitWait,即第4点中提到的WebDriverWait

4.元素存在于DOM中,但不可单击。

在这种情况下, 将ExplicitWaitExpectedConditions设置为,elementToBeClickable以使元素可单击:

WebDriverWait wait2 = new WebDriverWait(driver, 10);wait2.until(ExpectedConditions.elementToBeClickable(By.id("navigationPageButton")));

5.元素存在但具有临时覆盖。

在这种情况下,ExplicitWait使用 ExpectedConditions设置invisibilityOfElementLocated为可使Overlay不可见。

WebDriverWait wait3 = new WebDriverWait(driver, 10);wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));

6.元素存在但具有永久覆盖。

用于JavascriptExecutor直接在元素上发送点击。

WebElement ele = driver.findElement(By.xpath("element_xpath"));JavascriptExecutor executor = (JavascriptExecutor)driver;executor.executeScript("arguments[0].click();", ele);

java – 如何删除Chrome Web驱动程序和IE Web驱动程序的日志

java – 如何删除Chrome Web驱动程序和IE Web驱动程序的日志

我正在使用selenium chrome web driver开发工具.这应该只显示控制台上的结果.但在初始化期间它会打印一些错误日志.我的问题是如何删除这些日志.

WebDriver driver=new InternetExplorerDriver();

在这种情况下,它显示日志

Started InternetExplorerDriver server (32-bit)
  2.24.2.0
 Listening on port 41437

而对于铬

WebDriver driver =new ChromeDriver();

而日志是

Started ChromeDriver
  port=42458
  version=21.0.1180.4
  log=G:\Workspace_Selenium\WebTestSelenium_ToResolveTheReview\chromedriver.log

寻求帮助

解决方法

如果您没有使用控制台以外的任何类型的日志记录(或自己管理),那么

Logger shutUp = Logger.getLogger("");
shutUp.setLevel(Level.WARNING);

做的工作.那应该只输出警告.当然,您可以使用Level.SEVERE使其仅输出错误,甚至使Level.OFF绝对安静.

Java 如何强制Selenium WebDriver单击当前不可见的元素?

Java 如何强制Selenium WebDriver单击当前不可见的元素?

如何解决Java 如何强制Selenium WebDriver单击当前不可见的元素??

Selenium根据以下条件确定元素是否可见(使用DOM检查器确定哪些CSS适用于你的元素,请确保你查看计算的样式):

  • visibility != hidden
  • display != none (is also checked against every parent element)
  • opacity != 0 (this is not checked for clicking an element)
  • height and width are both > 0
  • for an input, the attribute type != hidden

你的元素符合这些条件之一。如果你没有能力更改元素的样式,请按照以下方法用javascript强制执行此操作(由于你使用了Selenium2 API,因此假设使用WebDriver):

((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;", inputElement);

但这不会触发javascript事件,如果你依赖于该输入的change事件,那么你也必须触发它(有多种方法,最容易使用该页面上加载的任何javascript库)。

解决方法

我在FirefoxDriver中使用Selenium 2 Java API。当我填写表单时,根据表单输入,将复选框添加到页面。

我想使用Selenium模拟对这些复选框的单击。该元素在常规浏览器中可见且可用,但是selenium断言该元素不可见。

"Element is not currently visible and so may not be interacted with"

我可以强迫selenium忽略元素的不可见状态吗?如何强制Selenium与不可见元素进行交互?

Java-元素MyElement在点(x,y)不可点击...其他元素将获得点击

Java-元素MyElement在点(x,y)不可点击...其他元素将获得点击

如何解决Java-元素MyElement在点(x,y)不可点击...其他元素将获得点击?

Element ... is not clickable at point (x, y). Other element would receive the click"可能是由不同因素引起的。你可以通过以下任一过程解决它们:

由于存在JavaScript或AJAX调用而无法单击元素 尝试使用Actions Class:

WebElement element = driver.findElement(By.id("id1"));
Actions actions = new Actions(driver);
actions.movetoElement(element).click().build().perform();
  1. 由于元素不在视口中,因此无法单击 尝试用于JavascriptExecutor将元素带入视口中:
JavascriptExecutor jse1 = (JavascriptExecutor)driver;
jse1.executeScript("scroll(250, 0)"); // if the element is on top.
jse1.executeScript("scroll(0, 250)"); // if the element is at bottom.

要么

WebElement myelement = driver.findElement(By.id("id1"));
JavascriptExecutor jse2 = (JavascriptExecutor)driver;
jse2.executeScript("arguments[0].scrollIntoView()", myelement); 
  1. 在元素可单击之前,页面正在刷新。 在这种情况下诱发一些wait

  2. 元素存在于DOM中,但不可单击。 在这种情况下ExplicitWait,请为元素添加一些可单击的元素。

webdriverwait wait2 = new webdriverwait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
  1. 元素存在但具有临时覆盖。 在这种情况下,ExplicitWait使用 ExpectedConditions设置invisibilityOfElementLocated为会使叠加层不可见。
webdriverwait wait3 = new webdriverwait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
  1. 存在元素,但具有永久覆盖。 用于JavascriptExecutor直接在元素上发送点击。
WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);

解决方法

我正在尝试使用基于selenium的Katalon Studio进行一些测试。在我的测试之一中,我必须在文本区域内编写。问题是我得到以下错误:

...Element MyElement is not clickable at point (x,y)... Other element would receive the click...

实际上,我的元素放置在其他可能隐藏它的diva里面,但是如何使click事件击中我的textarea?

javascript – 带角度叠加的量角器/ Selenium,其他元素将获得点击

javascript – 带角度叠加的量角器/ Selenium,其他元素将获得点击

我们的应用程序有一个角度覆盖,总是在dom(虽然不总是可见)..有时当我试图点击页面上的元素时,Selenium会抛出错误…

Element is not clickable at point (544,297). Other element would
receive the click: div class=”overlay” style=”transition-property:
opacity; -webkit-transition-property: opacity; transition-duration:
300ms; -webkit-transition-duration: 300ms; transition-timing-function:
ease-in-out; -webkit-transition-timing-function: ease-in-out; display:
block; opacity: 0;”>

有没有人经历过这个? webdriver .isdisplayed总是报告它是假的,即使它仍然禁止点击.

我编写了一些附加到量角器的waitForAngular函数的代码,该函数检查覆盖的dom元素的各种状态(等到它有一个display:属性值为“none”).这有很大帮助,除非浏览器在后台执行,否则我不再遇到此问题.如果浏览器不在前台,那么我经常会遇到覆盖问题.当量角器正在等待(基于我等待角度覆盖)时,如果我将浏览器带到前台,则测试立即开始继续执行并且覆盖的dom状态发生变化.

会喜欢有洞察力的人的任何想法.

我认为.isdisplayed无法正常工作似乎是一个webdriver问题.而且我还假设叠加层在背景中陷入特定的dom状态是一个角度问题.

解决方法

根据你的css属性,你的元素有不透明度:0;

根据这个答案here,具有不透明度的元素:0仍然接收事件,因此您的叠加层不会完全隐藏.

我建议你使用其他css属性来隐藏你的叠加层,例如visibility:hidden或display:none;代替.

今天关于Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?的讲解已经结束,谢谢您的阅读,如果想了解更多关于java – 如何删除Chrome Web驱动程序和IE Web驱动程序的日志、Java 如何强制Selenium WebDriver单击当前不可见的元素?、Java-元素MyElement在点(x,y)不可点击...其他元素将获得点击、javascript – 带角度叠加的量角器/ Selenium,其他元素将获得点击的相关知识,请在本站搜索。

本文标签: