Java 如果没有Thread.sleep,WebIE将出现“找不到元素”异常

Java 如果没有Thread.sleep,WebIE将出现“找不到元素”异常,java,eclipse,selenium,selenium-webdriver,internet-explorer-11,Java,Eclipse,Selenium,Selenium Webdriver,Internet Explorer 11,我是初学者,需要帮助。我到处都有谷歌,尽了最大努力,但仍然找不到这个IE11问题的答案。我的脚本在Firefox和Chrome中运行良好,但由于某些原因,IE 11 32位给了我这个错误“找不到元素…”,如果我在驱动程序查找元素之前添加“线程睡眠” 它跑得很慢。我不想每隔一行脚本就添加线程睡眠,它会运行得很慢!我一定错过了什么。正在寻找在IE 11上运行此功能的解决方案,但没有此异常。请帮忙 下面是我已经做过的一些注释,我使用的是什么,我的脚本和我的错误 我在谷歌上搜索的内容 “Webdrive

我是初学者,需要帮助。我到处都有谷歌,尽了最大努力,但仍然找不到这个IE11问题的答案。我的脚本在Firefox和Chrome中运行良好,但由于某些原因,IE 11 32位给了我这个错误“找不到元素…”,如果我在驱动程序查找元素之前添加“线程睡眠” 它跑得很慢。我不想每隔一行脚本就添加线程睡眠,它会运行得很慢!我一定错过了什么。正在寻找在IE 11上运行此功能的解决方案,但没有此异常。请帮忙

下面是我已经做过的一些注释,我使用的是什么,我的脚本和我的错误

我在谷歌上搜索的内容 “Webdriver IE找不到元素”并检查了所有链接,但仍然找不到解决方案

使用Eclipse,用Java编写脚本

版本:11.0.9600.17691 更新版本:11.0.17 KB3032359

在此链接-->code.google.com/p/selenium/wiki/InternetExplorerDriver -使用IE 32位进行测试。我做了32位和64位版本的浏览器IEDriverServer.exe64位运行速度非常慢,但从某个地方了解到这是一个bug,所以我一直在用32位进行测试 -我已经用IE 11完成了所有必需的配置。为每个区域设置保护模式设置以启用保护模式,将浏览器缩放级别设置为100%,为64位windows安装设置注册表项

使用webdriverwait,但不起作用。下面的例子

WebDriverWaitdriver,30.UntelexpectedConditions.visibilityOfElementLocatedBy.linkTextParties.click

我对IE的发现是真的吗

IEDriverServer.exe在本地计算机上启动HTTP服务器。您的语言绑定使用HTTP客户机使用JSON over HTTP wire协议与服务器通信。然而,启动这个HTTP服务器不是即时的;IEDriverServer.exe初始化它并准备好接收来自语言绑定客户端的HTTP请求需要一点时间。当您从Java代码调用新的InternetExplorerDriver时,Java语言绑定将启动IEDriverServer.exe,但随后必须等待HTTP服务器就绪。它通过使用HttpClient类轮询服务器来等待,直到收到有效响应。你看到的是驱动程序说,IEDriverServer.exe的HTTP服务器还没有收到连接,只是让你知道

我的测试脚本

public void TestThread() throws Exception {
System.setProperty("webdriver.ie.driver", "C:\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
driver.get(baseUrl);
driver.manage().window().maximize();
driver.findElement(By.xpath("//a[contains(@href, '?p=n&sectid=38')]")).click();
driver.findElement(By.name("login_email")).clear();
driver.findElement(By.name("login_email")).sendKeys("1000016");
driver.findElement(By.name("login_password")).clear();
driver.findElement(By.name("login_password")).sendKeys("testing123");
driver.findElement(By.id("setLogin")).click();
driver.findElement(By.linkText("Parties")).click();
driver.findElement(By.linkText("d327_host1_FF")).click();
driver.findElement(By.linkText("Review Bookings")).click();
driver.findElement(By.id("addNewBooking")).click();
我的错误

已启动InternetExplorerDriver服务器32位 2.42.0.0在端口2619上侦听失败:TestThread org.openqa.selenium.NoSuchElementException:找不到元素 with link text==Parties警告:服务器未提供任何 stacktrace信息命令持续时间或超时:308毫秒

WebDriver等等,不为我工作

WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Parties"))).click();
WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.linkText("d327_host1_FF"))).click();
WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.linkText("Review Bookings"))).click();
WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.id("addNewBooking"))).click();
WebDriverWait(driver, 30).until(ExpectedConditions.visibilityOfElementLocated(By.id("guests-booking-modal-element-2"))).sendKeys("Booking added at party order");
webdriverwait错误

已启动InternetExplorerDriver服务器32位 2.42.0.0 正在侦听端口35252 失败:TestThread java.lang.NullPointerException 首先,testngpackage.testieunabletofinelement.testthreadtestieunabletofinelement.java:57 在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法中 位于sun.reflect.NativeMethodAccessorImpl.invokeUnknown源


不要为findElement方法的WebDriverWait操心,如果它找不到元素,它就无法检查可见性。这可以使用驱动程序本身的隐式等待设置来完成

driver.manage().timeouts().implicitlyWait(30000, TimeUnit.MILLISECONDS);
只要在实例化驱动程序之后设置它,当它找不到具有findElement的元素时,它将等待30000毫秒30秒,直到元素存在,然后抛出异常


值得注意的是WebDriverWait非常有用。只是不在这个特定的用例中。

您能提供您正在测试的HTML片段吗?而且,WebDriverWait应该可以工作!可能你可以尝试不同的选择器不是linkText,而是id或cssSelector?我看不到代码中添加了任何显式等待?Parties@sap1ens我添加了HTML框架。你能给我举一个webdriverwait的例子吗,bc它对我不起作用:我没有这个元素的ID或CSS选择器。这里有link和xpath:link、xpath:href和xpath:position,我从selenium中提取IDE@LittlePanda我已经添加了使用webdriverwait,并得到以下错误你太棒了!这就成功了。我在我的其他脚本中隐式地等待,并且认为这是无用的,因为完成我的脚本需要花费很长时间,所以我将时间从30000改为5000,以更快地完成我的脚本。直到现在,才将implicit和IE放在一起。真不敢相信我还没有在谷歌上看到这个。干得好!希望我能投票给你的答案,但没有足够的声誉!