如何使用selenium python单击页面顶部导航栏中的项目?
我正在尝试使用selenium python测试网页。一切正常,但在单击导航栏项目时遇到问题 我使用了:如何使用selenium python单击页面顶部导航栏中的项目?,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我正在尝试使用selenium python测试网页。一切正常,但在单击导航栏项目时遇到问题 我使用了: driver.find_element_by_xpath('./li/a[. = "Log in"]') driver.find_element_by_link_text('Log in') 还使用了: driver.find_element_by_xpath('./li/a[. = "Log in"]') driver.find_element_by_link_text('Log i
driver.find_element_by_xpath('./li/a[. = "Log in"]')
driver.find_element_by_link_text('Log in')
还使用了:
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>
此代码在第页可见,请轻松检查。有人知道更好的互动方式吗?好的,所以我检查了
问题是,当窗口大小很小时,需要先单击导航切换
试试这个
从selenium.common.Exception导入NoTouchElementException
尝试:
登录按钮=驱动程序。通过链接文本“登录”查找元素
登录按钮。单击
除无任何例外:
导航栏切换=驱动程序。按类名称查找元素
'导航栏\切换\辅助对象'
导航栏切换。单击
登录按钮=驱动程序。通过链接文本“登录”查找元素
登录按钮。单击
要在中以文本登录的方式单击链接,您需要引导WebDriverWait使元素可单击,并且您可以使用以下任一选项:
使用CSS_选择器:
使用XPATH:
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
浏览器快照:
使现代化
作为替代方案,您可以按如下方式使用execute_脚本:
使用CSS_选择器:
使用XPATH:
您遇到了什么错误?请您提供更多信息。我试过使用您提供的HTML代码段,效果很好。可能元素不可单击,因为它不可见。如果你能提供一个你得到的错误或链接到页面,那就太好了。@puchal给你:这似乎对你有用,但我得到了超时exception@MahaWaqar签出答案更新并让我知道状态。如果您在原始代码中或在此处指出您遇到的异常,那么hmmm将非常有用,这样我就可以更改代码一致出现2个异常:selenium.common.exceptions.NoSuchElementException:Message:无此类元素:无法定位元素:{method:链接文本,选择器:登录}和selenium.common.exceptions.NoSuchElementException:消息:无此类元素:无法定位元素:{方法:css选择器,选择器:。导航栏\切换\帮助器}
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']"))))
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']"))))