Tried several methods but this Value Error keeps popping up running with the WebDriver

Tags: , , , ,



Below is the part where my code program meets a runtime ValueError.

while real_original_amount > 1:
    future_amount=driver.find_element_by_xpath('//[@id="app"]/div[1]/div[2]/div[1]/div/div[3]/div[2]/div[3]/div/div/span/span')
    future_amount_float = float(future_amount.text)
    betting_count = ()

As I’m using selenium as part of the program, im taking webelements into a variable then convert the variable to a float number as it is on the website. Below is the error:

Traceback (most recent call last):
File "C:UsersUserPycharmProjectsSelenium Projectsmain.py", line 74, in <module>
    future_amount_float = float(future_amount.text)
ValueError: could not convert string to float: ''

Tried several different methods to solve this ValueError but all didn’t really worked out.

Answer

This error message…

ValueError: could not convert string to float: ''

…implies that the variable ' ' cannot be converted to float as it is a blank.


Solution

Possibly the textContext wasn’t rendered when the line of code was executed. So to locate the element you need to induce WebDriverWait for the visibility_of_element_located() and you can use the following Locator Strategy:

  • Using XPATH:

    future_amount = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//[@id="app"]/div[1]/div[2]/div[1]/div/div[3]/div[2]/div[3]/div/div/span/span")))
    future_amount_float = float(future_amount.text)
    
  • 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
    


Source: stackoverflow