[英]Selenium button click not working
這是bitbucket.org網頁源頁面的HTML代碼。
<div class="aui-layer aui-dialog2 aui-dialog2-large" role="dialog" aria-hidden="false" data-aui-focus="false" data-aui-blanketed="true" style="z-index: 3000;"> <header class="aui-dialog2-header">
<h1 class="aui-dialog2-header-main dialog-title">Add SSH key</h1>
</header>
<div id="bb-new-ssh-key-dialog-content" class="aui-dialog2-content "><form id="new-ssh-key" method="post" class="ssh-keys-form aui">
<input type="hidden" name="csrfmiddlewaretoken" value="Y1fI2KoE87IKZwncZHYIh7zBpFyfXMsI">
<div id="id_label_group" class="field-group ">
<label for="id_label">
Label
</label>
<input class=" text long-field" id="id_label" maxlength="255" name="label" type="text">
</div>
<div id="id_key_group" class="field-group ">
<label for="id_key">
Key<span class="aui-icon icon-required"></span><span class="content">required</span>
</label>
<textarea class=" textarea long-field" cols="40" columns="40" id="id_key" name="key" placeholder="Paste your key here..." rows="8"></textarea>
</div>
<p class="field-group">
<strong class="heading">Already have a key?</strong>
Copy <a href="https://confluence.atlassian.com/x/YwV9E" target="_blank">your key</a> to your clipboard
<span class="ssh-key-copy-help mac">with: <code>cat ~/.ssh/id_rsa.pub | pbcopy</code></span>
<span class="ssh-key-copy-help linux" style="display: inline;">with: <code>xclip -sel clip < ~/.ssh/id_rsa.pub</code></span>
</p>
<p class="field-group" id="ssh_error_help">
<strong class="heading">Problems adding a key?</strong>
Read our <a href="https://confluence.atlassian.com/x/2YJnJ" target="_blank">knowledge base</a> for common issues.
</p>
<div class="buttons-container">
<div class="buttons">
<input type="hidden" name="action" value="add-key">
<button type="submit" id="add_key_button" class=" hidden add_key_button">
Add key
</button>
</div>
</div>
</form></div>
<footer class="aui-dialog2-footer">
<div class="aui-dialog2-footer-actions">
<button class=" aui-button aui-button-primary dialog-submit" resolved="">
Add key
</button>
<button class=" aui-button aui-button-link dialog-cancel" resolved="">Cancel</button>
</div>
</footer>
</div>
我想按下帶有文本“添加鍵”的按鈕。 我已經嘗試過使用硒命令
1. driver.find_element_by_xpath("//button[contains(text(),'Add key')]").click()
2. driver.find_element_by_tag_name("footer").find_element_by_tag_name("div").find_element_by_xpath("//button[contains(text(),'Add key')]").click()
3. driver.execute_script("document.getElementByXPath(\'' + //button[contains(text(), 'Add key')] + '\').click()")
但是,沒有任何辦法解決這些可能性,並拋出錯誤,即無法找到所需的元素。 該窗口看起來像一個彈出窗口,因此我也嘗試過切換到iframe,但這也失敗了。
您是否嘗試過類似的方法:
driver.find_element_by_xpath("//div[@class='aui-dialog2-footer-actions']//button[contains(text(), 'Add key')]").click()
看到這篇文章 。
確保按鈕可見。 嘗試使用Thread.sleep(3000)或更高版本
您可以嘗試使用CSS選擇器或類名-
driver.find_element_by_css_selector(".dialog-submit").click()
driver.find_element_by_class_name("dialog-submit").click()
另外,您可以嘗試-
wait = WebDriverWait(driver, 10)
bttn = wait.until(expectedCondition.presence_of_element_located((By.CLASS_NAME , "dialog-submit")))
driver.execute_script("arguments[0].click();", bttn)
凡將conditionCondition導入為:
from selenium.webdriver.support import expected_conditions as expectedCondition
希望能幫助到你!
在您的HTML中,存在兩個“添加鍵”按鈕,因此根據硒功能,它會找到第一個添加鍵,因此您需要繼續執行第二個添加鍵按鈕。
為此,您可以使用xpath
//footer[@class='aui-dialog2-footer']/div/button
要么
//footer[@class='aui-dialog2-footer']/div/button//button[contains(text(),'Add key')]
盡管事實證明,維護它是一場噩夢,但您可以嘗試使用Firebug獲取絕對的xpath並嘗試一下。 看起來像“ / html / body / div [1] / ...”
-在評論中會更好,但目前還不完全-。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.