th2112 th2112 - 10 months ago 90
Python Question

Selenium wait for element to be clickable python

All, I'm needing a little assistance with Selenium waits. I can't seem to figure how to wait for an element to be ready.

The element that I am needing to wait I can locate and click using my script via the code below...
CreateJob = driver.find_element_by_xpath(".//*[@id='line']/div[1]/a")
CreateJob = driver.find_element_by_partial_link_text("Create Activity")

I'm needing to wait for this element to be on the page and clickable before I try to click on the element.

I can use the sleep command, but I have to wait for 5 seconds or more and it seems to be unreliable and errors out 1 out of 8 times or so.

I can't seem to find the correct syntax to use.

the HTML code for this is below.

<html manifest="https://tddf/index.php?m=manifest&a=index">
<body class="my-own-class mozilla mozilla48 mq1280 lt1440 lt1680 lt1920 themered" touch-device="not">
<noscript style="text-align: center; display: block;">Please enable JavaScript in your browser settings.</noscript>
<div id="wait" style="display: none;">
<div id="processing" class="hidden" style="display: none;"/>
<div id="loading" class="hidden" style="display: none;"/>
<div id="loadingPartsCatalog" class="hidden"/>
<div id="panel">
<div id="top-toolbar" class="hidden" style="display: block;">
<div id="commands-line" class="hidden" style="display: block;">
<div id="line">
<div class="action-link">
<a class="tap-active" href="#m=activity/a=set" action_link_label="create_activity" component_gui="action" component_type="action">Create Activity</a>
<div class="action-link">
<div class="action-link">
<div class="action-link">
<div id="commands-more" style="display: none;">
<div id="commands-list" class="hidden">
<div id="provider-search-bar" class="hidden center"


Here is a link to the 'waiting' section of the Python Selenium docs:

You wait should look like this:

element = WebDriverWait(driver, 10).until(
    EC.visibility_of((By.XPATH, ".//*[@id='line']/div[1]/a"))