Selenium python:find_elements_by_tag_name 和循环有效但无效 find_element_by_xpath
Selenium python: find_elements_by_tag_name and looping works but not find_element_by_xpath
我正在尝试找到标题为 'Type a message' 的 'div' 元素。
以下代码有效:
div_nodes = driver.find_elements_by_tag_name('div')
for element in div_nodes:
if element.get_attribute('title') == 'Type a message':
element.send_keys(Keys.ENTER)
但这不起作用:
element = driver.find_element_by_xpath('//div[@title="Type a message"]')
element.send_keys(Keys.ENTER)
我收到错误 selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@title="Type a message"]"}
编辑:
这是代码和网页的相关部分。我正在将一个 phone 号码和一条消息传递给 web.whatsapp.com。下面是工作代码。如果我用 find_element_by_xpath 替换最后 4 行,它不起作用:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import urllib.parse
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=r'<mypath>/chromedriver.exe', options=options)
qry = {}
qry['phone'] = str(contact_number)
qry['text'] = message
url = "https://web.whatsapp.com/send/?{}".format(urllib.parse.urlencode(qry))
driver.get(url)
div_nodes = driver.find_elements_by_tag_name('div')
for element in div_nodes:
if element.get_attribute('title') == 'Type a message':
element.send_keys(Keys.ENTER)
我试过这个 xpath,它有效
element = driver.find_element_by_xpath('//div[contains(@title, "message")]')
或者,您可以尝试点击发送按钮
driver.find_element_by_css_selector('span[data-testid="send"]').click()
这也适用于我。让我知道他们是否也适合你。
p.s。我建议使用新函数更新代码,因为您使用的函数已被弃用。
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
driver = webdriver.Chrome(service=Service(r'<mypath>/chromedriver.exe'), options=options)
div_nodes = driver.find_elements(By.TAG_NAME, 'div')
element = driver.find_element(By.XPATH, '//div[@title="Type a message"]')
我正在尝试找到标题为 'Type a message' 的 'div' 元素。
以下代码有效:
div_nodes = driver.find_elements_by_tag_name('div')
for element in div_nodes:
if element.get_attribute('title') == 'Type a message':
element.send_keys(Keys.ENTER)
但这不起作用:
element = driver.find_element_by_xpath('//div[@title="Type a message"]')
element.send_keys(Keys.ENTER)
我收到错误 selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@title="Type a message"]"}
编辑: 这是代码和网页的相关部分。我正在将一个 phone 号码和一条消息传递给 web.whatsapp.com。下面是工作代码。如果我用 find_element_by_xpath 替换最后 4 行,它不起作用:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import urllib.parse
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(executable_path=r'<mypath>/chromedriver.exe', options=options)
qry = {}
qry['phone'] = str(contact_number)
qry['text'] = message
url = "https://web.whatsapp.com/send/?{}".format(urllib.parse.urlencode(qry))
driver.get(url)
div_nodes = driver.find_elements_by_tag_name('div')
for element in div_nodes:
if element.get_attribute('title') == 'Type a message':
element.send_keys(Keys.ENTER)
我试过这个 xpath,它有效
element = driver.find_element_by_xpath('//div[contains(@title, "message")]')
或者,您可以尝试点击发送按钮
driver.find_element_by_css_selector('span[data-testid="send"]').click()
这也适用于我。让我知道他们是否也适合你。
p.s。我建议使用新函数更新代码,因为您使用的函数已被弃用。
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
driver = webdriver.Chrome(service=Service(r'<mypath>/chromedriver.exe'), options=options)
div_nodes = driver.find_elements(By.TAG_NAME, 'div')
element = driver.find_element(By.XPATH, '//div[@title="Type a message"]')