Selenium Webdriver - 无法找到元素

时间:2017-04-12 05:55:02

标签: java selenium selenium-webdriver

我有一个Selenium Webdriver JUnit Java测试,我无法在Drupal 8表(也有样式)中成功使用定位器。在Firefox中我可以使用Firepath和Xpath检查器来确定并检查xpath确定。但是,当我运行JUnit 4测试时,无法找到它。有趣的是,我第一次运行这个测试它运行正常,但是之后的许多尝试都无法运行。

我已经成功地将xpath等用于此网站中的许多其他测试,但由于某种原因,我无法使其工作。

实际上,无法定位元素消息是针对下一个命令;

driver.findElement(By.id("edit-application-status-1")).click();

但是我知道它在上一个命令上失败了(如下所示),因为它从不点击进入此页面。

代码失败;

driver.findElement(By.xpath(".//*[@id='block-ua-theme-content']/div/div/div[2]/table/tbody/tr[1]/td[2]/a")).click();

也试过了;

driver.findElement(By.cssSelector("a[href='/application-19']")).click();

我已尝试使用明确等待更改为cssSelector

wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a[href='/application-19']")));

滚动到视图中,如下所示;

WebElement element1 = driver.findElement(By.cssSelector("a[href='/application-19']"));
jse.executeScript("arguments[0].scrollIntoView(true);", element1);

2 个答案:

答案 0 :(得分:0)

处理Web表可能很棘手,因此最好逐个遍历WebTable的所有元素;然后检查您的元素是否已找到,然后触发您的操作:

List<WebElement> tableElements = driver.findElements(By.xpath(".//*[@id='block-ua-theme-content']/div/div/div[2]/table/tbody/tr[1]/td"));


        for(WebElement item : tableElements){

        System.out.println("item text : " + item.getText());

            if(item.getText().equals("Text of your  <a> tag")){

                 WebElement newItem =  item.findElement(By.tagName("a"));

                newItem.click();

            }
        }

答案 1 :(得分:0)

//Click on first item in list tr[1]
        System.out.println("Before");
        List<WebElement> tableElements = driver.findElements(By.xpath(".//[@id='block-ua-theme-content']/div/div/div[2]/table/tbody/tr[1]"));

        for(WebElement item : tableElements){

            if(item.getText().equals("Abhimanyujeet")){

                WebElement newItem =  driver.findElement(By.xpath("/a"));
                System.out.println("tableElements" + tableElements);
                System.out.println("item" + item);

                newItem.click();

            }
        }
        System.out.println("After");

        driver.findElement(By.id("edit-application-status-1")).click();

控制台;

tableElements[EyesRemoteWebElement:[[FirefoxDriver: firefox on XP (acecd5e9-    e491-4afd-9f78-82351e50b9e4)] -> xpath: .//*[@id='block-ua-theme-content']    /div/div/div[2]/table/tbody/tr[1]]]

itemEyesRemoteWebElement:[[FirefoxDriver: firefox on XP (acecd5e9-e491-4afd- 9f78-82351e50b9e4)] -> xpath: .//*[@id='block-ua-theme-content']/div/div/div[2]/table/tbody/tr[1]]

跟踪;

org.openqa.selenium.NoSuchElementException: Unable to locate element: #edit\-application\-status\-1