簡體   English   中英

如何在 Python 中使用 Selenium 單擊登錄按鈕

[英]How to click the login button using Selenium with Python

<div class="login" id="login">
<div class="top">
    <div class="logo"></div>
    <div class="language">
        <div class="language-show" ng-click="showLanguageList($event)"><span title="English" class="current-language" id="current_language">English</span></div>
        <div class="language-list" id="language_list" style="display: none;" ng-click="changeLanguage($event)"><div title="English" class="out" id="en" onmouseover='this.className="over"' onmouseout='this.className="out"'>English</div></div>
    </div>
</div>
<table class="middle" border="0" cellspacing="0" cellpadding="0">
    <tbody><tr>
        <td class="login-l">&nbsp;</td>
        <td class="login-m">
            <div class="login-part">
                <div class="line"></div>
                <div class="login-error">
                    <div class="inputValidTip ng-hide" ng-show="szErrorTip!=''"><i class="error"></i><label class="ng-binding"></label></div>
                </div>
                <div class="login-user">
                    <input class="login-input ng-valid ng-dirty" id="username" type="text" maxlength="32" placeholder="User Name" autocomplete="off" ng-model="username">
                    <i class="icon-user"></i>
                </div>
                <div class="login-item">
                    <input class="login-input ng-pristine ng-valid ng-scope" style="display: none;" type="text" maxlength="16" ng-model="password"><input class="login-input ng-valid ng-dirty" id="password" type="password" maxlength="16" placeholder="Password" ng-model="password" pigsney=""><span class="pigsney close" style="left: 210px; top: 7px; display: inline-block;" onselectstart="return false;"></span>
                    <i class="icon-pass"></i>
                </div>
                <div class="login-item bottom">
                    <span class="pwd-link ng-binding ng-hide" ng-click="forgetPwd()" ng-show="oCap.bSptGuidImport || oCap.bSptQAReset" ng-bind="oLan.forgetPwd">Forgot password?</span>
                    <button class="btn btn-primary login-btn" type="button" ng-click="login()"><label class="ng-binding" ng-bind="oLan.login">Login</label></button>
                </div>
                <!--<div class="login-item anonymous" ng-show="anonymous">
                    <span ng-bind="oLan.anonymous" ng-click="login('anonymous')"></span>
                </div>-->
            </div>
        </td>
        <td class="login-r">&nbsp;</td>
    </tr>
</tbody></table>
<div class="footer" id="footer"></div>

我想舔登錄按鈕。

button class="btn btn-primary login-btn" type="button" ng-click="login()

我怎樣才能找到這個元素? 我用過Python。 而且, find_element_by_css_selector()

網絡源來自一些嵌入式機器。 所以,我不能使用 Chrome。 我在 IE 上找不到 xpath,因為我是初學者。

請幫我!

您可以使用其類名單擊元素,您可以這樣做:

button = driver.find_element_by_xpath("//button[text()='Login']")
button.click()

所需的元素是一個Angular元素,因此click()是您必須為element_to_be_clickable()引入WebDriverWait的元素,您可以使用以下任一解決方案:

  • 使用CSS_SELECTOR

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.btn.btn-primary.login-btn[ng-click^='login']>label.ng-binding[ng-bind$='login']"))).click()
  • 使用XPATH

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='btn btn-primary login-btn' and starts-with(@ng-click, 'login')]/label[@class='ng-binding' and text()='Login']"))).click()
  • 注意:您必須添加以下導入:

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

您可以在其子元素中找到帶有“登錄”文本的元素。 您還可以在單​​擊之前向元素添加滾動

element = driver.find_element_by_xpath('//button[label[.="Login"]]')
ActionChains(driver).move_to_element(element).click().perform()

第一個等待元素可點擊

WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, //button[text()='Login']"")))

然后使用一些 JSExecutor 來點擊它。

element = driver.find_element_by_xpath("//button[text()='Login']")
driver.execute_script("arguments[0].click();", element) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM