问题描述
我的代码的第一部分是:
from selenium import webdriver
PATH = 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe'
driver = webdriver.Chrome(PATH)
driver.maximize_window()
driver.get('https://glovoapp.com/ro/buc/store/kaufland-buc/')
login = driver.find_element_by_xpath('//*[@id="user-login"]')
login.click()
之后,尝试使用 find_element_by_xpath()
和其他一些方法,但它们都不起作用,因为它要么说“无法定位元素”要么“元素不可交互”。我该怎么做?在之前的示例中,我可以使用 find_view_by_id()
找到它,但现在我遇到了一些问题。
解决方法
要登录该网站,您需要为 element_to_be_clickable()
诱导 WebDriverWait,您可以使用以下任一 Locator Strategies:
-
使用
CSS_SELECTOR
:driver.get("https://glovoapp.com/ro/buc/store/kaufland-buc/") WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"button#user-login"))).click() WebDriverWait(driver,"div#login-email div input"))).send_keys("AlexBebereche@stackoverflow.com")
-
使用
XPATH
:driver.get("https://glovoapp.com/ro/buc/store/kaufland-buc/") WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH,"//button[@id='user-login']"))).click() WebDriverWait(driver,"//div[@id='login-email']//following::input[@data-test-id='text-field-input']"))).send_keys("AlexBebereche@stackoverflow.com")
-
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
浏览器快照: