Code:
import time
from selenium import webdriver
driver = webdriver.Chrome('C:\\Git_Data\\automationFrameworks\\chromedriver.exe')
driver.maximize_window()
driver.get('https://www.news18.com/')
def elementPresent(locatorType, locator):
# present = true
# not present = false
element = []
if locatorType == 'xpath':
element = driver.find_elements_by_xpath(locator)
elif locatorType == 'cssSelector':
element = driver.find_elements_by_css_selector(locator)
elif locatorType == 'id':
element = driver.find_elements_by_id(locator)
elif locatorType == 'name':
element = driver.find_elements_by_name(locator)
elif locatorType == 'className':
element = driver.find_elements_by_class_name(locator)
else:
element = driver.find_elements_by_tag_name(locator)
if len(element) == 0:
return False
else:
return True
part1 = "//*[@id='mc_mainWrapper']/nav/div/ul[2]/li["
part2 = "]/a"
i = 2
while elementPresent("xpath", part1 + str(i) + part2):
link = driver.find_element_by_xpath(part1 + str(i) + part2)
# linktext = link.text
# print(linktext)
link.click()
print(driver.title)
time.sleep(5)
driver.back()
i = i + 1
else:
print("No more elements found")
time.sleep(5)
driver.quit()
Output:
Coronavirus News in India: Latest News on Coronavirus Disease COVID-19 Symptoms, Precaution, Treatment, Coronavirus Pandemic
No more elements found
Please guide me on this.
Issue got resolved by using WebDriverWait.
Please close the ticket.
Working code:
import time
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
def elementPresent(locatorType, locatorValue):
wait = WebDriverWait(driver, 20)
try:
wait.until(EC.presence_of_element_located((locatorType, locatorValue)))
wait.until(EC.visibility_of_element_located((locatorType, locatorValue)))
except Exception:
return False
return True
driver = webdriver.Chrome('C:\\Git_Data\\automationFrameworks\\chromedriver.exe')
driver.maximize_window()
driver.get("https://www.news18.com/")
part1 = "//*[@id='mc_mainWrapper']/nav/div/ul[2]/li["
part2 = "]/a"
i = 2
while elementPresent("xpath", part1 + str(i) + part2):
link = driver.find_element_by_xpath(part1 + str(i) + part2)
linktext = link.text
print(linktext)
link.click()
print(driver.title)
driver.back()
i = i + 1
else:
print("No more elements found")
time.sleep(5)
driver.quit()