Hi StackOverflow gurus,
I am new to coding and Python but very enthusiastic about it. Your support and option will be huge addition do my development.
I am trying to write a Python code, where using Selenium find_element(By.LINK_TEXT,"") I need to identify company names and click on it. This action should be repetitive for all the companies on the list (in total I have around 60 entities on the list, but for this example I am using only 3). For this I used the loop. But as a result I am getting an error:
driver.find_element(By.LINK_TEXT,format(str(company))).click() #Select the entity. This input must be later variable. Items are foudn with link text
TypeError: 'str' object is not callable
These actions should be performed in Google Chrome browser.
This is what I have documented so far:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
company = ['Apple Inc','Microsoft','Tesla']
url = "I did not include the link due to security reasons"
driver = webdriver.Chrome(r"C:\Users\Downloads\chromedriver_win32\chromedriver.exe")
driver.get(url)
drop = Select(driver.find_element(By.ID,'ctl00_Cont_uxProjectTTIDropDownList')) #select project from droop down list
drop.select_by_visible_text ('2022 Q4 - Projects')
sleep(1)
for i in range (len(company)):
driver.find_element(By.LINK_TEXT,format(str(company))).click()
I am getting an error on this the last line:
for i in range (len(company)):
driver.find_element(By.LINK_TEXT,format(str(company))).click()
If I manually include the value it works e.g.:
driver.find_element(By.LINK_TEXT,'Tesla').click()
Could you share your suggestions how to fix this?
You're using the entire company list as your text. Use the index you created in the for loop to grab only one element in the list:
for i in range (len(company)):
driver.find_element(By.LINK_TEXT,company[i]).click()