0

Image showing the small box at right corner to click on using Selenium Image for html

I want to download the pdf file uploaded to Linkedin using Selenium. So I need to click on this full screen box and then I need to click on download.

But I am getting error NoSuchElementException when I am using the following code:

driver.find_element_by_class_name("artdeco-icon").click()

Please Help how to click on that full screen rectangular box.

Check the full error below :

---------------------------------------------------------------------------
NoSuchElementException                    Traceback (most recent call last)
<ipython-input-46-b333460fb62c> in <module>
      4 #     driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
      5 #     sleep_rand(4)
----> 6 driver.find_element_by_class_name("artdeco-icon").click()
      7 # WebElement svgObject = driver.findElement(By.xpath());
      8 

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element_by_class_name(self, name)
    752             stacklevel=2,
    753         )
--> 754         return self.find_element(by=By.CLASS_NAME, value=name)
    755 
    756     def find_elements_by_class_name(self, name) -> WebElement:

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self, by, value)
   1236             value = '[name="%s"]' % value
   1237 
-> 1238         return self.execute(Command.FIND_ELEMENT, {
   1239             'using': by,
   1240             'value': value})['value']

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
    416         response = self.command_executor.execute(driver_command, params)
    417         if response:
--> 418             self.error_handler.check_response(response)
    419             response['value'] = self._unwrap_value(
    420                 response.get('value', None))

~\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
    241                 alert_text = value['alert'].get('text')
    242             raise exception_class(message, screen, stacktrace, alert_text)  # type: ignore[call-arg]  # mypy is not smart enough here
--> 243         raise exception_class(message, screen, stacktrace)
    244 
    245     def _value_or_default(self, obj: Mapping[_KT, _VT], key: _KT, default: _VT) -> _VT:

NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".artdeco-icon"}
  (Session info: chrome=100.0.4896.60)
Stacktrace:
Backtrace:
    Ordinal0 [0x00A67413+2389011]
    Ordinal0 [0x009F9F61+1941345]
    Ordinal0 [0x008EC658+837208]
    Ordinal0 [0x009191DD+1020381]
    Ordinal0 [0x0091949B+1021083]
    Ordinal0 [0x00946032+1204274]
    Ordinal0 [0x00934194+1130900]
    Ordinal0 [0x00944302+1196802]
    Ordinal0 [0x00933F66+1130342]
    Ordinal0 [0x0090E546+976198]
    Ordinal0 [0x0090F456+980054]
    GetHandleVerifier [0x00C19632+1727522]
    GetHandleVerifier [0x00CCBA4D+2457661]
    GetHandleVerifier [0x00AFEB81+569713]
    GetHandleVerifier [0x00AFDD76+566118]
    Ordinal0 [0x00A00B2B+1968939]
    Ordinal0 [0x00A05988+1989000]
    Ordinal0 [0x00A05A75+1989237]
    Ordinal0 [0x00A0ECB1+2026673]
    BaseThreadInitThunk [0x750D6739+25]
    RtlGetFullPathName_UEx [0x76F08E7F+1215]
    RtlGetFullPathName_UEx [0x76F08E4D+1165]

2 Answers2

0

I noticed that your selector is misspelled. Maybe try correcting that first, and if it still does not work try the code below.

from selenium.webdriver.common.by import By

driver.find_element_by_css_selector(".artdeco-icon").click()

Please make sure that the CSS selector that you use is unique and ready to be selected by the time it gets executed by adding some wait time. You can do it explicitly by importing the time library.

import time

time.sleep(3)
driver.find_element_by_css_selector(".artdeco-icon").click()
anonymous
  • 56
  • 3
  • Thank You for your suggestion. But I am getting the same error. I have added the full error below in the question – Gaurav Mehra Apr 03 '22 at 06:58
  • The reason for NoSuchElementException could be because 1) the element you are trying to find is not in the HTML scope. The data could be in an iframe. 2) by the time the driver tries to find the element, it has not finished loading yet. – anonymous Apr 03 '22 at 15:04
0

You can use below and check the WebDriverWait Here explained very well.

WebDriverWait(driver,20).until(EC.visibility_of_all_elements_located((by_css_selector, ".artdeco-icon"))).click()
Akzy
  • 1,817
  • 1
  • 7
  • 19