1

I am new python selenium webdriver Student.

I want to click() next button but it's not working.

I am stuck here few days.

Thanks you any help.

Message Error:

Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id='next_button']"}

This is my code:

browser.find_element_by_xpath("//*[@id='next_button']").click()

this is webpage source:

<div id=“banner" class="shell" style="width: 786px; background-color: rgb(0, 0, 255);">
<input id=“json" value=“x" type="hidden">
    <div class="shell">
        <div class="border">
            <div id="header" style="height: 135px;">
            <div id="navigation">
            <div id="main" style="background-color:#FFFFFF;">
                <div id="content" class="left" style="padding: 30px 0px 20px; left: 250px;">
                    <style>
                    <div style="width: 100%;">
                        <div class="inPn" style="width: 100%;background: #ffffff">
                            <div class="detail">
                                <h3>Example Event</h3>
                                <table class="fit">
                                    <colgroup>
                                    <tbody>
                                        <tr valign="middle">
                                            <td>
                                            <td>
                                                <div style="float:right; padding:5px;">
                                                    <img id=“back_button" src="https://www.site/back.png" style="cursor: pointer;">
                                                    <img id=“next_button" src="https://www.site/next.png" style="cursor: pointer;margin-top: 10px;"
rurucatcat
  • 11
  • 1
  • 3
  • Are you sure this isn't inside an IFRAME and it's visible? BTW, don't use XPath for something like this ... use `.find_element_by_id("next_button")`. XPath is slower, more brittle, and has inconsistent support between browsers. Prefer id then CSS Selectors... then if you need to get an element by the text it contains use XPath. – JeffC Dec 16 '16 at 21:32

2 Answers2

1

I would also suggest waiting for the page to load using the following code:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

try:
    element = WebDriverWait(browser, 15).until(EC.presence_of_element_located((By.XPATH, "//img[@id='next_button']")))
    browser.find_element_by_xpath("//img[@id='next_button']").click()    
except TimeoutException:
    print 'Timeout - No tag found'
    continue

or use:

WebDriverWait(browser, 15).until(lambda driver: driver.find_elements(By.XPATH,"//img[@id='next_button']"))
Marc vT
  • 496
  • 3
  • 12
0

As your element requires to get image from src, you might need to wait some time until target element appears on page:

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait as wait

button = wait(browser, 10).until(EC.presence_of_element_located((By.XPATH,"//img[@id='next_button']")))
button.click()
Andersson
  • 51,635
  • 17
  • 77
  • 129