Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selenium wait for element to be clickable python

All, I'm needing a little assistance with Selenium waits. I can't seem to figure out 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")

or

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.

<document>
<html manifest="https://tddf/index.php?m=manifest&a=index">
<head>
<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>
<div class="action-link">
<div class="action-link">
<div class="action-link">
</div>
<div id="commands-more" style="display: none;">
<div id="commands-list" class="hidden">
</div>
<div id="provider-search-bar" class="hidden center"  
like image 621
th2112 Avatar asked Apr 16 '26 12:04

th2112


1 Answers

Here is a link to the 'waiting' section of the Python Selenium docs: http://selenium-python.readthedocs.io/waits.html#explicit-waits

You wait should look like this:

element = WebDriverWait(driver, 10).until(
    EC.visibility_of((By.XPATH, ".//*[@id='line']/div[1]/a"))
)
like image 132
FamousJameous Avatar answered Apr 18 '26 00:04

FamousJameous



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!