为什么我的测试会在线程" main"中抛出异常。 org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:

时间:2017-10-12 01:05:03

标签: selenium-webdriver

我正试图点击“联系我们”'此网页上的链接。当我使用finpath元素选项使用xpath,cssselector,linktext时,我收到此错误。一些解决方案提出了以下建议:我右键单击页面并单击“查看页面源”并搜索 iFrames。但是,我找不到任何。所以我不认为这是switchto.frame()问题? 我还尝试删除' *'来自xpath,但这也不起作用。

我还添加了 Thread.sleep(),但是还没有解决问题?

Java中的Selenium代码:

    public static void main(String[] args) throws InterruptedException {
            // TODO Auto-generated method stub
            System.setProperty("webdriver.chrome.driver",System.getProperty("user.dir")+"/Chromedriver/ChromeDriver.exe");
            WebDriver driver = new ChromeDriver();
            driver.get("https://my.voya.com/voyasso/index.html?domain=voyaretirement.voya.com#/login-pweb");

            String window1 = driver.getWindowHandle();
            System.out.println("The Window Handle is " +window1);
        //  driver.switchTo().frame(window1);
            WebElement link = driver.findElement(By.xpath("//*[@id=\"header-info\"]/a"));

            link.click();
            Thread.sleep(8000);
            String window2 = driver.getWindowHandle();
            System.out.println("The Window Handle is " +window2);


        }

    }

这是html代码,我试图点击“联系我们”在另一个窗口中打开。:

<a class="b au-target" target="_blank" au-target-id="5" href="https://voyaretirement.voya.com/einfo/contactus.aspx?domain=voyaretirement.voya.com&amp;cl=INGWIN&amp;page=prelogin&amp;pl=dummy">Contact Us</a>

以下是来自控制台的错误消息

线程中的异常&#34; main&#34; org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{&#34;方法&#34;:&#34; xpath&#34;,&#34;选择器&#34;:&#34; / / * [@ ID =&#34;报头信息&#34;] / A&#34;}

2 个答案:

答案 0 :(得分:1)

解决此问题的最简单方法是添加等待元素可点击的点击,然后点击它。

new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@id='header-info']/a"))).click();

答案 1 :(得分:0)

从您共享的代码中可以使用更好的xpath:

WebElement link = driver.findElement(By.xpath("//a[contains(@href,'contactus')]"));

这将返回第一个具有href且其中包含单词contactus的元素。

由于您没有提供页面的完整html,因此很难判断该元素是否存在于默认框架中,但如果它确实存在于单独的框架中,则需要切换到该框架在你试图找到元素之前。