无法使用 Selenium 单击元素 - 元素是 "not interactable" 或 "unable to locate"
Cannot Click Element with Selenium - element is either "not interactable" or "unable to locate"
我很难点击 www.tradingview.com
的 "Sign In" 元素。我插入了一个 implicitly_wait
并尝试通过 xPath 和 class 名称查找元素。无论我尝试什么,我都得到 element not interactable
或 unable to locate element
。
from selenium import webdriver
def sign_in():
driver = webdriver.Chrome()
driver.get('https://www.tradingview.com/')
driver.implicitly_wait(10)
driver.find_element_by_class_name('tv-header__profile-menu js-device-menu-btn').click()
sign_in()
您似乎在尝试查找错误的元素...
试试这个:
driver.find_element_by_xpath("//a[text()='Sign In']/ancestor::span").click()
有两个登录。瞄准第二个
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def sign_in():
driver = webdriver.Chrome()
driver.get('https://www.tradingview.com/')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.tv-header__dropdown-text [href*=signin]'))).click()
sign_in()
如果一切都失败了你可以使用javascript点击
driver.execute_script("document.querySelector('[href*=signin]').click();")
嘿,试试这个,一旦它有效
driver.findElement(By.Xpath("//span//a[text()='Sign In']")).click();
- 如果您将定位器策略更改为 XPath Selector,您的代码将更具可读性和可理解性
- 考虑使用 Explicit Wait,因为它是更灵活的解决方案,可以节省时间和 CPU 周期。
示例代码:
driver.get("https://www.tradingview.com/")
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[text()='Sign In']"))).click()
我很难点击 www.tradingview.com
的 "Sign In" 元素。我插入了一个 implicitly_wait
并尝试通过 xPath 和 class 名称查找元素。无论我尝试什么,我都得到 element not interactable
或 unable to locate element
。
from selenium import webdriver
def sign_in():
driver = webdriver.Chrome()
driver.get('https://www.tradingview.com/')
driver.implicitly_wait(10)
driver.find_element_by_class_name('tv-header__profile-menu js-device-menu-btn').click()
sign_in()
您似乎在尝试查找错误的元素...
试试这个:
driver.find_element_by_xpath("//a[text()='Sign In']/ancestor::span").click()
有两个登录。瞄准第二个
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def sign_in():
driver = webdriver.Chrome()
driver.get('https://www.tradingview.com/')
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.tv-header__dropdown-text [href*=signin]'))).click()
sign_in()
如果一切都失败了你可以使用javascript点击
driver.execute_script("document.querySelector('[href*=signin]').click();")
嘿,试试这个,一旦它有效
driver.findElement(By.Xpath("//span//a[text()='Sign In']")).click();
- 如果您将定位器策略更改为 XPath Selector,您的代码将更具可读性和可理解性
- 考虑使用 Explicit Wait,因为它是更灵活的解决方案,可以节省时间和 CPU 周期。
示例代码:
driver.get("https://www.tradingview.com/")
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[text()='Sign In']"))).click()