[英]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"> </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"> </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.