簡體   English   中英

如何使用硒python單擊頁面頂部導航欄中的項目?

[英]How to click on item in navigation bar on top of page using selenium python?

我正在嘗試使用硒python測試網頁。 一切正常,但在單擊導航欄項目時遇到問題

我用過:

driver.find_element_by_xpath('./li/a[. = "Log in"]')

還使用過:

driver.find_element_by_link_text('Log in')

沒有運氣!

代碼段:

<div class='container'>
<div class='navigationbar__header'>
<a class='navigationbar__header__logo tracking-link' data-link-name='logo' href='/' target='_self'>
<div id='hired-brand'>HIRED</div>
</a>
</div>
<div class='navigationbar__toggle'>
<div class='navigationbar__toggle__element'>
<img alt='Menu' class='icon icon--sandwich' src='data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'>
</div>
<input class='navigationbar__toggle__helper' type='checkbox'>
<ul class='navigationbar__navigation'>
<li class="navigationbar__item "><a class="sm-ml0 tracking-link" data-link-name="employers_page" target="_self" href="/employers">For Employers</a></li>
<li class="navigationbar__item "><a class="sm-ml0 tracking-link" data-link-name="success_stories" target="_self" href="/success-stories">Success Stories</a></li>
<li class="navigationbar__item "><a class="sm-ml0 tracking-link" data-link-name="employers_resources" target="_self" href="/employers/resources">Resources</a></li>
<li class="navigationbar__item "><a class="text-medium sm-ml0 tracking-link" data-link-name="login" target="_self" href="/login">Log in</a></li>
<div class='xs-ptb1 xs-prl1 md-ptb0 md-inline-block'><li class="navigationbar__item "><a class="button button--primary tracking-link" data-link-name="signup" target="_self" href="/signup">Sign Up</a></li></div>

</ul>
</div>
</div>
</nav>

可以在頁面檢查中輕松看到此代碼。 有人知道與它互動的更好方法嗎?

要在帶有文本的鏈接上click() 網站登錄,您需要為element_to_be_clickable()誘導WebDriverWait ,並且可以使用以下定位策略之一

  • 使用CSS_SELECTOR

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.navigationbar__item a[data-link-name='login'][href='/login']"))).click() 
  • 使用XPATH

     WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='navigationbar__item ']/a[@data-link-name='login' and @href='/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 
  • 瀏覽器快照:

雇用


更新

另外,您可以按如下方式使用execute_script()

  • 使用CSS_SELECTOR

     driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.navigationbar__item a[data-link-name='login'][href='/login']")))) 
  • 使用XPATH

     driver.execute_script("arguments[0].click();", WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//li[@class='navigationbar__item ']/a[@data-link-name='login' and @href='/login']")))) 

確定,所以我檢查了該站點

問題是,當窗口大小較小時,需要首先單擊導航切換按鈕。

嘗試這個

from selenium.common.exceptions import NoSuchElementException

try:
    login_button = driver.find_element_by_link_text('Log in')
    login_button.click()
except NoSuchElementException:
    nav_bar_toggle = driver.find_element_by_class_name(
        'navigationbar__toggle__helper'
    )
    nav_bar_toggle.click()
    login_button = driver.find_element_by_link_text('Log in')
    login_button.click()

暫無
暫無

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

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