如何在Selenium Webdriver(Java)中找到包含特定文本的元素?

时间:2019-03-28 13:26:52

标签: java selenium-webdriver

我正在尝试从每次刷新后具有不同ID的元素获取ID,然后打印出来

网站上的元素代码为:<div id="time_2019-03-28 07:36:50.604535">This element has a ID that changes every time the page is loaded</div>

我的代码:

WebElement randomID = driver.findElement(By.xpath("//*[contains(@id, 'time')]"));
        System.out.println("Random ID is " + randomID.getAttribute("id"));

错误:线程“ main”中的异常org.openqa.selenium.NoSuchElementException:否这样的元素:无法找到元素:{“方法”:“ xpath”,“选择器”:“ // * [包含(@id ,'time')]“}

编辑: 完整HTML:

<html xmlns="http://www.w3.org/1999/xhtml"><head>
        <title>Selenium: Beginners Guide</title>
        <link type="text/css" rel="stylesheet" href="/styles/seleniumbeginners.css">
    <script src="chrome-extension://mooikfkahbdckldjjndioackbalphokd/assets/prompt.js"></script></head>
    <body>
        <div class="mainheading">Selenium: Beginners Guide</div>
        <div class="mainbody">
            <div><a href="/">Index</a></div>
            <div id="find">This item div has the id of find<br>
            put find into the target of Selenium IDE<br>
             and click the find button</div>
             <div id="divontheleft" class="leftdiv">
                <input id="but1" value="Button with ID" type="button">
                <br>
                <input value="Sibling Button" type="button">
             </div>
             <div id="divontheleft2"><input name="but2" value="Button with name" type="button"><br>
             <input id="random" type="button" value="Random"></div>
             <div id="divinthecenter" class="centerdiv"><input type="button" name="verifybutton" value="Verify this button
                 here"><br><input type="button" name="verifybutton1" value="chocolate"></div>
             <div id="time_2019-03-29 07:08:53.435150">This element has a ID that changes every time the page is loaded</div>
        </div>
        <script type="text/javascript">
            var randomButton;
            randomButton = document.getElementById('random');
            randomButton.addEventListener('click',function(e){
                but1 = document.getElementById('but1');
                but1.style.position = 'absolute';
                but1.style.top = 10 * Math.floor(Math.random() *  50);
                but1.style.left = 10 * Math.floor(Math.random() *  50); 
                }, true);
        </script>


</body></html>

1 个答案:

答案 0 :(得分:0)

@Test
    public void p0l0() throws InterruptedException {

        driver.get("file:\\C:\\Users\\pburgr\\Desktop\\p0l0.html");
        Thread.sleep(5000);

        List<WebElement> divsContainingId = driver.findElements(By.xpath("//div[contains(@id,'time')]"));

        String divsContainingIdSize = Integer.toString(divsContainingId.size());
        System.out.println(divsContainingIdSize);

        String id = divsContainingId.get(0).getAttribute("id");
        System.out.println(id);

    }

给我:

Starting ChromeDriver 2.42.591088 (7b2b2dca23cca0862f674758c9a3933e685c27d5) on port 4982
Only local connections are allowed.
Bře 29, 2019 9:30:52 DOP. org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
1
time_2019-03-29 07:08:53.435150