Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用selenium python单击页面顶部导航栏中的项目?_Python_Selenium_Xpath_Css Selectors_Webdriverwait - Fatal编程技术网

如何使用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

我正在尝试使用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 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']"))))