最近很多小伙伴都在问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)点处不可单击。其他元素将获得点击?
- java – 如何删除Chrome Web驱动程序和IE Web驱动程序的日志
- Java 如何强制Selenium WebDriver单击当前不可见的元素?
- Java-元素MyElement在点(x,y)不可点击...其他元素将获得点击
- javascript – 带角度叠加的量角器/ Selenium,其他元素将获得点击
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驱动程序的日志
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单击当前不可见的元素??
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)不可点击...其他元素将获得点击?
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();
- 由于元素不在视口中,因此无法单击 尝试用于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);
-
在元素可单击之前,页面正在刷新。 在这种情况下诱发一些
wait
。 -
元素存在于DOM中,但不可单击。 在这种情况下
ExplicitWait
,请为元素添加一些可单击的元素。
webdriverwait wait2 = new webdriverwait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("id1")));
- 元素存在但具有临时覆盖。
在这种情况下,
ExplicitWait
使用ExpectedConditions
设置invisibilityOfElementLocated
为会使叠加层不可见。
webdriverwait wait3 = new webdriverwait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
- 存在元素,但具有永久覆盖。 用于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,其他元素将获得点击
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状态是一个角度问题.
解决方法
根据这个答案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,其他元素将获得点击的相关知识,请在本站搜索。
本文标签: