Как нажать кнопку входа в систему с помощью Selenium с Python - PullRequest
0 голосов
/ 10 февраля 2020
<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. Я не могу найти xpath на IE, потому что я новичок.

Пожалуйста, помогите мне!

Ответы [ 4 ]

0 голосов
/ 10 февраля 2020

Первый элемент ожидания будет активным

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) 
0 голосов
/ 10 февраля 2020

Желаемый элемент - это Angular элемент, поэтому click() элемент, который вы должны вызвать WebDriverWait для element_to_be_clickable(), и вы можете использовать любое из следующих решений:

  • Использование 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
    
0 голосов
/ 10 февраля 2020

Вы можете найти элемент с текстом «Логин» в его дочернем элементе. Вы также можете добавить прокрутку к элементу до нажатия

element = driver.find_element_by_xpath('//button[label[.="Login"]]')
ActionChains(driver).move_to_element(element).click().perform()
0 голосов
/ 10 февраля 2020

Вы можете нажать на элемент, используя его имя класса, вы можете сделать это следующим образом:

button = driver.find_element_by_xpath("//button[text()='Login']")
button.click()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...