硒找不到元素,即使它们存在

时间:2018-10-11 16:01:30

标签: python selenium selenium-chromedriver

我正在创建一个简单的硒脚本来输入用户名和密码来登录。这是我的代码:

driver = webdriver.Chrome(executable_path=r'C:\\Users\\Aspire5\\Downloads\\chromedriver_win32\\chromedriver.exe')
driver.get("https://ven02207.service-now.com/")

username = driver.find_element_by_xpath('//*[@id="user_name"]')
username.send_keys('username')

password = driver.find_element_by_xpath('//*[@id="user_password"]')
password.send_keys('this_is_password')

但是我遇到以下异常:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="user_name"]"}

我正在通过代码访问this网站。我在代码中提供的XPath存在于页面上,但仍返回No Such Element Exception

我在这里想念的是什么?我已经看到thisthis的问题,但是找不到确切的答案。

4 个答案:

答案 0 :(得分:1)

您需要首先切换到框架。.由于input标签位于框架内部

frame = driver.find_element_by_xpath('//*[@id="gsft_main"]')
driver.switch_to.frame(frame)
driver.find_element_by_id('user_name').send_keys('sarthak')
driver.find_element_by_id('user_password').send_keys('sarthak')

答案 1 :(得分:0)

您需要等待元素出现在DOM中。因此,尝试等待获取Web元素     driverwebdriver.Chrome(executable_path = r'C:\ Users \ Aspire5 \ Downloads \ chromedriver_win32 \ chromedriver.exe')

driver.get("https://ven02207.service-now.com/")

username = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "//*[@id="user_name"]"))
username.send_keys('username')

password = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, '//*[@id="user_password"]'))
password.send_keys('this_is_password')    

答案 2 :(得分:0)

只使用转义斜杠就可以了

'//*[@id=\"user_name\"]'
'//*[@id=\"user_password\"]'

答案 3 :(得分:0)

我陷入了同样的问题。您可以借助xpath对其进行修复。使用xpath获取元素。