当前位置: 首页 > 知识库问答 >
问题:

如何让@FindAll使用Selenium为InternetExplorer WebDriver工作

史逸春
2023-03-14

我正在尝试运行一个针对Internet Explorer的TestNG套件。然而,它似乎无法使用CSS定位器在网页上查找元素。我使用@FindAll注释来指定多个定位策略,这些策略对Chrome和Firefox都很有效。以下是我在TestNG失败摘要中看到的错误:

org.openqa.selenium.WebDriverExc0019:(警告:服务器没有提供任何堆栈跟踪信息)命令持续时间或超时: 70毫秒构建信息:版本:'2.53.0',修订:'35ae25b',时间:'2016-03-15 17:00:58'系统信息:主机:'(主机名在此省略)',ip:'10.18.28.53',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_91'驱动程序信息:org.openqa.selenium.ie.InternetExplorerDriver功能[{BrowserAttachTimeout=0,ie.enableFullPageScreenshot=true, enablePeristentHover=true,ie.forceCreateProcessApi=false,ie.forceShellWindowsApi=false, pageLoadStrategy=正常,忽略设置=false,ie.fileUploadDialogTimeout=3000, version=11,平台=WINDOWS, nativeEvents=true,ie.ensureCleansession=false, elementScrollBeasior=0,ie.browser命令行开关=,要求WindowFocus=false, BrowserName=Internet Explorer,初始化BrowserUrl=http://localhost:28843/, javascriptEn的=true,忽略保护模式设置=false, enableElementCacheCleanup=true,意外警报行为=解除}]会话ID: 3ccb2fc8-aac7-484c-8a0d-ca8c8539742e***元素信息:{使用=CSS选择器,值=#内容

下面是正在运行的代码块:

TestBaseSetup类代码段:

public class TestBaseSetup
    {
        private static WebDriver    driver;
        private static Logger       Log         = Logger.getLogger(TestBaseSetup.class.getName());
        static String               driverPath  = "C:\\Users\\bberndt\\eclipse\\Selenium Files\\";

        public static WebDriver getDriver()
            {
                return driver;
            }

private static WebDriver initIEDriver(String appURL)
        {
            Log.info("Launching Microsoft Internet Explorer with new profile");
            File file = new File(driverPath + "IEDriverServer.exe");
            System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
            WebDriver driver = new InternetExplorerDriver();
            Log.info("Driver instantiated");
            driver.manage().window().maximize();
            Log.info("Window maximized");
            driver.get(appURL);
            Log.info("Navigating to: " + appURL);
            return driver;
        }
}

LoginPageTest类:

public class LoginPageTest extends TestBaseSetup
{
    private WebDriver       driver;
    private LoginPage       loginPage;
    private HomePage        homePage;
    private SoftAssert      softAssert;
    private static Logger   Log = Logger.getLogger(LoginPageTest.class.getName());
    private String          sTestCaseName;
    private int             iTestCaseRow;

    @BeforeMethod
    public void setUpTest()
        {
            driver = getDriver();
            Log.info("Driver loaded");
            //loginPage = new LoginPage(driver);
            loginPage = PageFactory.initElements(driver, LoginPage.class);
            homePage = PageFactory.initElements(driver, HomePage.class);
            softAssert = new SoftAssert();

        }

    @Test(priority = 1)
    public void verifyLoginPage()
        {
            Log.info("--------------------------START TEST---------------------------");
            Log.info("Test 1: verifyLoginPage");
            softAssert.assertTrue(loginPage.verifyLoginPageTitle(), "Login page title does not match\n");
            softAssert.assertTrue(loginPage.verifyLoginTextTop(), "Login text top does not match\n");
            softAssert.assertTrue(loginPage.verifyLoginTextBottom(), "Login text bottom does not match\n");
            softAssert.assertAll();
        }
}

登录页面对象存储库:

public class LoginPage
    {
        protected WebDriver     driver;
        private static Logger   Log = Logger.getLogger(LoginPage.class.getName());

        @FindAll({ @FindBy(xpath = "/html/body/div/div/div/h1"),
                @FindBy(css = "#content > div.container > h1") })
        private WebElement      loginTextTop;
        @FindAll({ @FindBy(xpath = "/html/body/div/div/div/h2"),
                @FindBy(css = "h2") })
        private WebElement      loginTextBottom;

        public LoginPage(WebDriver driver)
            {
                this.driver = driver;
            }

        public String getPageTitle()
            {
                String title = driver.getTitle();
                return title;
            }

        public boolean verifyLoginPageTitle()
            {
                String expectedPageTitle = "WTS";
                return getPageTitle().contains(expectedPageTitle);
            }

        public String getLoginTextTop()
            {
                String TextTop = loginTextTop.getText();
                return TextTop;
            }

        public boolean verifyLoginTextTop()
            {
                String expectedPageText = "Welcome to CenterPoint™";
                return getLoginTextTop().contains(expectedPageText);
            }

        public String getLoginTextBottom()
            {
                String TextBottom = loginTextBottom.getText();
                return TextBottom;
            }

        public boolean verifyLoginTextBottom()
            {
                String expectedPageText = "Please Sign In";
                return getLoginTextBottom().contains(expectedPageText);
            }
    }

共有1个答案

堵茂勋
2023-03-14

原来这不是代码的问题。相反,Internet选项中有一个设置需要打开才能使其工作。高级

一旦我勾选了这个复选框,我的IE测试就如预期的那样工作了。

 类似资料:
  • 问题内容: 我正在尝试从具有命名空间的Word文档中查找所有内容,但我不知道语法到底是什么。 这些文档仅涵盖了非常简单的情况,并加入了URN和VML组合,我似乎无法从网上看到我能看到的任何示例。有人碰巧知道这是什么吗? 我正在尝试做这样的事情: 编辑:@aneroid写的是1000%正确的答案,超级有帮助。您应该对此投票。就是说,在理解了所有内容之后- 我接受了BS4的答案,因为它完全按照我的要求

  • 我正试图让spring slueth通过我们的系统提供追踪身份。 在检查其他服务的日志时,我注意到正在生成新的ID。

  • 问题内容: 我已经做了几次尝试,以使包注释@ParametersAreNonnullByDefault在maven项目中为我工作,但没有成功。有人可以共享一个指向最小/示例maven项目的链接吗(或发布了pom.xml和package- info.java和demo类)? 我说的是让findbugs处理器为我实施它。 问题答案: 如何申请 在您的程序包中创建一个文件,以在其中强制执行所需的行为。

  • 问题内容: 我正在尝试让Selenium RC在具有PHP / Apache的Linux上与Firefox 3一起工作,但是遇到了问题。这是我所做的: 我已经安装了Firefox Selenium-IDE扩展。 在Web服务器(在我的情况下,它实际上是运行Firefox的同一台计算机)上,我使用以下命令启动了Selenium服务器:java -jar selenium-server.jar -in

  • 问题内容: 如何让selenium等待日历小部件的加载?现在,我只是在将测试用例导出到junit程序后进行操作。 问题答案: 我会用 这将一直等待,直到元素出现在DOM中为止。 如果您需要检查元素是否可见,则最好使用

  • 我使用的是spring数据,我的DAO看起来像 在上面的代码中,注释行显示了我的意图。spring数据是否可以提供内置功能,使用这样的方法查找所有记录的顺序按某一列与ASC/DESC?