-1

I am trying to write a program that collects user information from a HTML table. I can get information from the first page, but cannot get selenium in python to click on the button for the next page. Here is the HTML code for the button I want to click

<a tabindex="0" aria-label="Next page"> Next <span class="show-for-sr">page</span></a> 

As you can see, it is an anchor tag with the text 'Next'. Clicking this in the browser brings me to the next page, however when I try to click using selenium I get the error

Traceback (most recent call last):
  File "/Users/gavmross/Desktop/cnct/user_data/webscrape/active_users.py", line 182, in <module>
    main()
  File "/Users/gavmross/Desktop/cnct/user_data/webscrape/active_users.py", line 20, in main
    open_site()
  File "/Users/gavmross/Desktop/cnct/user_data/webscrape/active_users.py", line 160, in open_site
    click_next()
  File "/Users/gavmross/Desktop/cnct/user_data/webscrape/active_users.py", line 136, in click_next
    element = WebDriverWait(driver, 20).until(
  File "/Users/gavmross/opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py", line 89, in click
    self._execute(Command.CLICK_ELEMENT)
  File "/Users/gavmross/opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/webelement.py", line 773, in _execute
    return self._parent.execute(command, params)
  File "/Users/gavmross/opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 430, in execute
    self.error_handler.check_response(response)
  File "/Users/gavmross/opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (734, 1344)
  (Session info: chrome=102.0.5005.61)
Stacktrace:
0   chromedriver                        0x000000010276bd19 chromedriver + 5197081
1   chromedriver                        0x00000001026f9b23 chromedriver + 4729635
2   chromedriver                        0x00000001022d72b8 chromedriver + 393912
3   chromedriver                        0x0000000102313a52 chromedriver + 641618
4   chromedriver                        0x00000001023115d3 chromedriver + 632275
5   chromedriver                        0x000000010230ec14 chromedriver + 621588
6   chromedriver                        0x000000010230d885 chromedriver + 616581
7   chromedriver                        0x0000000102301689 chromedriver + 566921
8   chromedriver                        0x0000000102329802 chromedriver + 731138
9   chromedriver                        0x0000000102300f45 chromedriver + 565061
10  chromedriver                        0x000000010232990e chromedriver + 731406
11  chromedriver                        0x000000010233c2a1 chromedriver + 807585
12  chromedriver                        0x00000001023296f3 chromedriver + 730867
13  chromedriver                        0x00000001022ffa49 chromedriver + 559689
14  chromedriver                        0x0000000102300a75 chromedriver + 563829
15  chromedriver                        0x000000010273dbdd chromedriver + 5008349
16  chromedriver                        0x0000000102742b64 chromedriver + 5028708
17  chromedriver                        0x0000000102747bcf chromedriver + 5049295
18  chromedriver                        0x00000001027437ca chromedriver + 5031882
19  chromedriver                        0x000000010271d59f chromedriver + 4875679
20  chromedriver                        0x000000010275d388 chromedriver + 5137288
21  chromedriver                        0x000000010275d50f chromedriver + 5137679
22  chromedriver                        0x0000000102773085 chromedriver + 5226629
23  libsystem_pthread.dylib             0x00007fff203388fc _pthread_start + 224
24  libsystem_pthread.dylib             0x00007fff20334443 thread_start + 15

Here is the python code that is intended to click on the next button

element = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, '//*[@id="queryList"]/pagination-template/ul/li[10]/a'))
        )
element.click()

How do I get selenium to go to the next page?

gavmross
  • 21
  • 4

1 Answers1

1

As per the HTML:

<a tabindex="0" aria-label="Next page"> Next <span class="show-for-sr">page</span></a>

To click on the link with text as Next page you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following locator strategies:

  • Using CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[aria-label='Next page'] span.show-for-sr"))).click()
    
  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@aria-label='Next page']//span[@class='show-for-sr' and text()='page']"))).click()
    
  • Note: You have to add the following imports :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
  • Tried both of these. Both times got a ```selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (734, 1343)``` error – gavmross Jun 08 '22 at 13:23
  • @gavmross Update the question with the complete error tracelog please. – undetected Selenium Jun 08 '22 at 13:50