Selenium - 无法通过 XPath、css 选择器、class 名称、标签名称、id、检查 iframe、检查元素是否已加载找到元素
Selenium - cannot find element via XPath, css selector, class name, tag name, id, checking for iframe, checking if element is loaded
我正在尝试使用 selenium 自动执行一天的开始程序,我正在尝试 select 并单击“标记”按钮,但无论我采用何种方式,都会出现无元素错误。
我已经尝试过 XPath、css select 或 class 名称、标签名称、id、检查 iframe、检查元素是否已加载。我就是听不懂。
这是网站HTML
<div class="contact-list-menu-tags">
<div class="search-item popover-content-item tag with-tooltip ">
-------> <span class="search-item-text popover-content-item-text">call</span> <-----
<div class="tooltip __pos-center __pos-top">
<div class="tooltip-content">
<div class="ico-hover ico-s">
<div class="ico ico-pencil ico-s __alt4 __not-hovered"></div>
<div class="ico ico-pencil ico-s __gray __hovered"></div></div>
<div class="ico-hover ico-s"><div class="ico ico-trash ico-s __alt4 __not-hovered"></div>
<div class="ico ico-trash ico-s __alt1 __hovered"></div></div></div></div></div>
<div class="search-item popover-content-item tag with-tooltip "><span class="search-item-text popover-content-item-text">CEO</span><div class="tooltip __pos-center __pos-top">
<div class="tooltip-content">
<div class="ico-hover ico-s">
<div class="ico ico-pencil ico-s __alt4 __not-hovered"></div>
<div class="ico ico-pencil ico-s __gray __hovered"></div></div>
<div class="ico-hover ico-s"><div class="ico ico-trash ico-s __alt4 __not-hovered"></div>
<div class="ico ico-trash ico-s __alt1 __hovered"></div></div></div></div></div></div>
抱歉有点乱,但我不确定在复制后如何修复格式,我试图找到并单击的元素是从顶部开始的第 3 行带箭头的元素
这是我正在处理的当前代码
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.nimble.com/') #goes to address
#login process
loginbutton = driver.find_element_by_xpath('/html/body/nav/div[1]/ul/li[8]/a')
loginbutton.click()
time.sleep(2)
username = driver.find_element_by_xpath('/html/body/form/div/div[1]/div/div[2]/input')
username.send_keys('xasokis718@ngo1.com')
time.sleep(1)
psswrd = driver.find_element_by_xpath('/html/body/form/div/div[1]/div/div[3]/input')
psswrd.send_keys('Password112')
signin = driver.find_element_by_xpath('/html/body/form/div/div[1]/div/button')
signin.click()
time.sleep(2)
#go to contacts
driver.get('https://app.nimble.com/#app/contacts/list')
time.sleep(4)
#search tag
calltag = driver.find_element_by_css_selector('span.content')
calltag.click()
driver.find
#//*[@id="app"]/div/div[1]/div/div[1]/div[2]/div[6]/div[1]/span
#document.querySelector("#app > div > div.contact-list-menu > div > div:nth-child(1) > div.contact-list-menu-inner > div.contact-list-menu-tags > div:nth-child(1) > span")
#app > div > div.contact-list-menu > div > div:nth-child(1) > div.contact-list-menu-inner > div.contact-list-menu-tags > div:nth-child(1) > span
#<span class="search-item-text popover-content-item-text">call</span>
#/html/body/div[1]/div[1]/div/div[1]/div/div[1]/div[2]/div[6]/div[1]/span
#document.querySelector("#app > div > div.contact-list-menu > div > div:nth-child(1) > div.contact-list-menu-inner > div.contact-list-menu-tags > div:nth-child(1) > span")
底部注释掉的内容是我 have/am 尝试的所有内容。里面的用户名和密码只是一个测试帐号,所以可以随意使用它来测试任何东西。
谢谢!
您的元素目标在 <iframe>
标签内,您需要先切换它。
请使用.frame_to_be_available_and_switch_to_it
方式处理。对于您的元素,您可以使用此 xpath //span[text()="call"]
#go to contacts
driver.get('https://app.nimble.com/#app/contacts/list')
wait = WebDriverWait(driver, 20)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'reactContactListFrame')))
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//span[text()="call"]')))
element.click()
我正在尝试使用 selenium 自动执行一天的开始程序,我正在尝试 select 并单击“标记”按钮,但无论我采用何种方式,都会出现无元素错误。
我已经尝试过 XPath、css select 或 class 名称、标签名称、id、检查 iframe、检查元素是否已加载。我就是听不懂。
这是网站HTML
<div class="contact-list-menu-tags">
<div class="search-item popover-content-item tag with-tooltip ">
-------> <span class="search-item-text popover-content-item-text">call</span> <-----
<div class="tooltip __pos-center __pos-top">
<div class="tooltip-content">
<div class="ico-hover ico-s">
<div class="ico ico-pencil ico-s __alt4 __not-hovered"></div>
<div class="ico ico-pencil ico-s __gray __hovered"></div></div>
<div class="ico-hover ico-s"><div class="ico ico-trash ico-s __alt4 __not-hovered"></div>
<div class="ico ico-trash ico-s __alt1 __hovered"></div></div></div></div></div>
<div class="search-item popover-content-item tag with-tooltip "><span class="search-item-text popover-content-item-text">CEO</span><div class="tooltip __pos-center __pos-top">
<div class="tooltip-content">
<div class="ico-hover ico-s">
<div class="ico ico-pencil ico-s __alt4 __not-hovered"></div>
<div class="ico ico-pencil ico-s __gray __hovered"></div></div>
<div class="ico-hover ico-s"><div class="ico ico-trash ico-s __alt4 __not-hovered"></div>
<div class="ico ico-trash ico-s __alt1 __hovered"></div></div></div></div></div></div>
抱歉有点乱,但我不确定在复制后如何修复格式,我试图找到并单击的元素是从顶部开始的第 3 行带箭头的元素
这是我正在处理的当前代码
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.nimble.com/') #goes to address
#login process
loginbutton = driver.find_element_by_xpath('/html/body/nav/div[1]/ul/li[8]/a')
loginbutton.click()
time.sleep(2)
username = driver.find_element_by_xpath('/html/body/form/div/div[1]/div/div[2]/input')
username.send_keys('xasokis718@ngo1.com')
time.sleep(1)
psswrd = driver.find_element_by_xpath('/html/body/form/div/div[1]/div/div[3]/input')
psswrd.send_keys('Password112')
signin = driver.find_element_by_xpath('/html/body/form/div/div[1]/div/button')
signin.click()
time.sleep(2)
#go to contacts
driver.get('https://app.nimble.com/#app/contacts/list')
time.sleep(4)
#search tag
calltag = driver.find_element_by_css_selector('span.content')
calltag.click()
driver.find
#//*[@id="app"]/div/div[1]/div/div[1]/div[2]/div[6]/div[1]/span
#document.querySelector("#app > div > div.contact-list-menu > div > div:nth-child(1) > div.contact-list-menu-inner > div.contact-list-menu-tags > div:nth-child(1) > span")
#app > div > div.contact-list-menu > div > div:nth-child(1) > div.contact-list-menu-inner > div.contact-list-menu-tags > div:nth-child(1) > span
#<span class="search-item-text popover-content-item-text">call</span>
#/html/body/div[1]/div[1]/div/div[1]/div/div[1]/div[2]/div[6]/div[1]/span
#document.querySelector("#app > div > div.contact-list-menu > div > div:nth-child(1) > div.contact-list-menu-inner > div.contact-list-menu-tags > div:nth-child(1) > span")
底部注释掉的内容是我 have/am 尝试的所有内容。里面的用户名和密码只是一个测试帐号,所以可以随意使用它来测试任何东西。
谢谢!
您的元素目标在 <iframe>
标签内,您需要先切换它。
请使用.frame_to_be_available_and_switch_to_it
方式处理。对于您的元素,您可以使用此 xpath //span[text()="call"]
#go to contacts
driver.get('https://app.nimble.com/#app/contacts/list')
wait = WebDriverWait(driver, 20)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, 'reactContactListFrame')))
element = wait.until(EC.element_to_be_clickable((By.XPATH, '//span[text()="call"]')))
element.click()