python - 如何使用 Selenium 和 Python 在 GitHub 页面 https://github.com/ 上单击登录元素
问题描述
我正在尝试使用 Selenium for python 单击 github 顶部的登录链接。我试过使用find_element_by_link_text()
,但我得到一个NoSuchElementException。然后我尝试使用find_element_by_xpath()
并得到一个ElementNotinteractableException。这是第一个的代码:
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://github.com')
signin = browser.find_element_by_link_text('Sign in')
signin.click()
这是第二个的代码。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://github.com')
signin_link = browser.find_element_by_xpath('/html/body/div[1]/header/div/div[2]/div[2]/a[1]')
signin_link.click()
我什至尝试过find_element_by_css_selector()
,但也得到了ElementNotInteractableException。我不明白出了什么问题。我不想放 html,但如果你去 github,它只是右上角的登录链接。
解决方案
要使用Selenium在 GitHub 页面https://github.com/右上角click()
的元素上,您需要诱导WebDriverWait,您可以使用以下任一Locator Strategies:Sign inelement_to_be_clickable()
使用
PARTIAL_LINK_TEXT
:WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Sign"))).click()
使用
CSS_SELECTOR
:WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a[href='/login']"))).click()
使用
XPATH
:WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[starts-with(., 'Sign')]"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
推荐阅读
- vba - 从网页视图源中搜索特定文本并使用 VBA 宏复制完整的完整行
- python - 芹菜工人 ImportError:没有名为“项目”的模块
- c - 如何从 C 程序中使用 OCIServerVersion (Oracle)?
- r - 治疗前后测量的 Wilcox.test
- python - 如何将networkX图导入neo4j?
- apache-spark - 不允许 EMR Master SSH
- javascript - 通过某些表单验证来防止 ajax 调用
- php - PHP json_encode 既漂亮又非转义
- html - 在视频元素上叠加文本
- python - CSV to Feather in Pandas with slicing Rows