1

The problem I am having with my code is that the title is never printed or stored. When I run the chromium web driver separately, I can get the title of the element just fine. So I don't think there is a problem with the element itself.

Here is the code:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(ChromeDriverManager().install(), options = options)
driver.get('https://carverlib.ent.sirsi.net/client/en_US/default/search/results?qf=ITYPE%09Material+Type%091%3AADULT-BOOK%09Adult+Book&av=0&isd=true')
for i in range(0,11):
    try:
        print("Clicking on element "+ str(i))
        driver.find_element_by_xpath(f'//*[@id="detailLink{i}"]').click()
        print("Located element")
        print(driver.find_element_by_xpath(f'//*[@id="detail_biblio{i}"]/div[1]/div/div/div[2]').text)
        WebDriverWait(driver,30).until(lambda x: x.execute_script("""return document.querySelectorAll('[title="Close"]')[0]"""))
        driver.execute_script("""document.querySelectorAll('[title="Close"]')[document.querySelectorAll('[title="Close"]').length - 1].click();""")
        print("Closed element")
    except:
        WebDriverWait(driver,30).until(lambda x: x.execute_script("""return document.querySelectorAll('[title="Close"]')[0]"""))
        driver.execute_script("""document.querySelectorAll('[title="Close"]')[document.querySelectorAll('[title="Close"]').length - 1].click();""")

Here is the output:

Clicking on element 0 Located element <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 1 Located element <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 2 <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 3 Located element <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 4 <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 5 Located element <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 6 <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 7 Located element <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 8 <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 9 Located element <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> Clicking on element 10 <selenium.webdriver.remote.webelement.WebElement (session="bae6dfbc7cafe80a0cd5b96a94e2c8c6", element="95101708-1180-46e4-bd86-1821455c2bbf")> >>>

Thanks for your assistance!

1 Answer 1

1

You can get a text from a visible element in Selenium. Wait for visibility of the element or get textContent using Javascript

WebDriverWait(driver,30).until(EC.visibility_of_element_located((By.XPATH, f'//*[@id="detail_biblio{i}"]/div[1]/div/div/div[2]'))).text
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.