Java Selenium“findElement”找不到现有对象

时间:2018-05-06 21:41:09

标签: java selenium internet-explorer

昨天我的问题解决后(见下面的链接),新的问题已经开始。 首先,上述问题的解决方案仅适用于IE。当我尝试使用相同的代码来提供chrome或firefox时(当然,除了驱动程序)我在开始时(在我降级IEDriverServer之前)收到错误消息。看到链接。

Eclipse Java Selenium failed to connect to localhost

其次。当我使用findelement函数时不会发生。错误消息“无法找到e 但是,这个元素就在那里。这里是应该控制的页面。

https://accounts.google.com/signup/v2/webcreateaccount?continue=https%3A%2F%2Fwww.google.de%2F%3Fgws_rd%3Dssl&hl=de&flowName=GlifWebSignIn&flowEntry=SignUp

这个问题已经经常被要求,但不幸的是答案对我没有帮助。一个解决方案是(因为findelement比浏览器更快)安装以下延迟。 driver.manage()。超时()。 implicitlyWait(5,TimeUnit.SECONDS);

另一个解决方案是搜索id或xpath而不是name(这就是为什么name和id在下面列为findelement)。到目前为止没有成功。没有提到的密钥输入一个字段(密码和名字等,我已经尝试过)。

这些文章最接近我的问题,但没有帮助我。 No such element exception | Internet explorer

Same CSS Slector Not Working in Internet Explorer but works in firefox

反正。 IE将打开,但不会填充其他浏览器和任何元素。这里是代码和错误消息。

import org.openqa.selenium.firefox.FirefoxBinary;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.grid.selenium.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.concurrent.TimeUnit;


public class firefoxöffner {




    public static void main(String[] args) throws IOException, URISyntaxException {
        System.setProperty("webdriver.gecko.driver","./geckodriver");

        String service = "D://IEDriverServer.exe";
        System.setProperty("webdriver.ie.driver", service);
        InternetExplorerDriver  driver = new InternetExplorerDriver();


        driver.get("https://accounts.google.com/signup/v2/webcreateaccount?flowName=GlifWebSignIn&flowEntry=SignUp");

        driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
        WebElement myDynamicElement = driver.findElement(By.id("lastName"));

        driver.findElement(By.id("lastName")).sendKeys("B");
        driver.findElement(By.name("lastName")).sendKeys("A");
    }
}

启动InternetExplorerDriver服务器(64位) 3.8.0.0 在港口47620上听 仅允许本地连接 Mai 06,20188 11:29:28 NACHM。 org.openqa.selenium.remote.ProtocolHandshake createSession 信息:检测到的方言:W3C 线程“main”中的异常org.openqa.selenium.NoSuchElementException:无法找到带有css选择器的元素== #lastName

再次感谢。

2 个答案:

答案 0 :(得分:0)

如果您使用Java + Selenium进行Web Interface测试,我建议您使用NoraUi开源框架。

此框架管理IE webdriver,Chrome webdriver和FF webdriver。

答案 1 :(得分:0)

在IE上运行时可能//*[@id="lastName"]并不能完全为您提供您想要使用的确切元素。相反,你什么时候可以尝试给出如下的Xpath

//*[@id="lastName"]//following-sibling::div"