尝试通过 Xpath 在 Selenium 中查找元素时出错
Error while trying to find an element by Xpath in Selenium
错误:
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"css selector","selector":"#submit-6359ad565c26651cca764d4e291dca49"}
在这个网站上:https://provide-journey-contact-details.homeoffice.gov.uk/next,我收到 'Save and Continue' 按钮的错误,我尝试通过 xpath 找到它,然后通过 css 选择器找到它,但它不起作用。我应该怎么办?请帮忙
driver.find_element_by_xpath(email_address).send_keys("almacompexim@yahoo.com")
driver.find_element_by_xpath(email_verify).send_keys("almacompexim@yahoo.com")
driver.find_element_by_xpath(password).send_keys("Alin1234")
driver.find_element_by_xpath(password_verify).send_keys("Alin1234")
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(@id, 'submit')]"))).click()
我无法打开该页面,但我猜你在访问该元素之前缺少等待/延迟。
此外,6359ad565c26651cca764d4e291dca49
后缀可能是动态的。
试试这个:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(@id,'submit')]"))).click()
如果元素最初不在可见屏幕中,您必须先滚动到它。
像这样:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
actions = ActionChains(driver)
button = wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id,'submit')]")))
time.sleep(0.5)
actions.move_to_element(button).perform()
time.sleep(0.5)
button.click()
UPD
该元素的唯一 XPath 是
//div[contains(@style,'display')]//div[contains(@style,'display')]//input[@value='Save and continue' and @type='submit']
您也可以使用更短的定位符,但这是唯一定位该按钮的方法。
因此,您单击该按钮的代码可以是:
wait.until(EC.presence_of_element_located((By.XPATH, "//div[contains(@style,'display')]//div[contains(@style,'display')]//input[@value='Save and continue' and @type='submit']"))).click()
错误: selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{"method":"css selector","selector":"#submit-6359ad565c26651cca764d4e291dca49"}
在这个网站上:https://provide-journey-contact-details.homeoffice.gov.uk/next,我收到 'Save and Continue' 按钮的错误,我尝试通过 xpath 找到它,然后通过 css 选择器找到它,但它不起作用。我应该怎么办?请帮忙
driver.find_element_by_xpath(email_address).send_keys("almacompexim@yahoo.com")
driver.find_element_by_xpath(email_verify).send_keys("almacompexim@yahoo.com")
driver.find_element_by_xpath(password).send_keys("Alin1234")
driver.find_element_by_xpath(password_verify).send_keys("Alin1234")
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(@id, 'submit')]"))).click()
我无法打开该页面,但我猜你在访问该元素之前缺少等待/延迟。
此外,6359ad565c26651cca764d4e291dca49
后缀可能是动态的。
试试这个:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
wait.until(EC.visibility_of_element_located((By.XPATH, "//*[contains(@id,'submit')]"))).click()
如果元素最初不在可见屏幕中,您必须先滚动到它。
像这样:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 20)
actions = ActionChains(driver)
button = wait.until(EC.presence_of_element_located((By.XPATH, "//*[contains(@id,'submit')]")))
time.sleep(0.5)
actions.move_to_element(button).perform()
time.sleep(0.5)
button.click()
UPD
该元素的唯一 XPath 是
//div[contains(@style,'display')]//div[contains(@style,'display')]//input[@value='Save and continue' and @type='submit']
您也可以使用更短的定位符,但这是唯一定位该按钮的方法。
因此,您单击该按钮的代码可以是:
wait.until(EC.presence_of_element_located((By.XPATH, "//div[contains(@style,'display')]//div[contains(@style,'display')]//input[@value='Save and continue' and @type='submit']"))).click()