简体   繁体   中英

How do I find an element that contains specific text in Selenium Webdriver (Java)?

Im trying to get id from element which have different id after each refresh and then print it

element code on website is: <div id="time_2019-03-28 07:36:50.604535">This element has a ID that changes every time the page is loaded</div>

My code :

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

error:Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(@id, 'time')]"}

Edit: Full 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>
@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);

    }

Gives me:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM