Siddhesh Siddhesh - 1 year ago 92
Python Question

Finding element with explicit wait using selenium webdriver in python

I am trying to find the element with the link text, I am using following code

handle = driver.window_handles
#handle for windows
#switching to new window
link = wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Followers ")))

And I am getting following traceback

Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
link = wait.until(EC.presence_of_element_located((By.LINK_TEXT, "Followers ")))
File "C:\Python27\lib\site-packages\selenium\webdriver\support\", line 71, in until
raise TimeoutException(message)
TimeoutException: Message: ''

HTML of the element I am trying to select is

<a href="/Kevin-Rose/followers">Followers <span class="profile_count">43,799</span></a>

How can I solve this problem??

Answer Source

If you use By.LINK_TEXT, there should be a link with exactly that text: Followers, but you have Followers 43,799.

In your case, you should use By.PARTIAL_LINK_TEXT instead:

wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, 'Followers')))

UPDATE Here's working example:

from selenium import webdriver
from import By
from import WebDriverWait
from import expected_conditions as EC

driver = webdriver.Chrome()  # CHANGEME
element = WebDriverWait(driver, 2).until(
    EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, "Followers"))
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download