Python 3.x Python selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素

Python 3.x Python selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素,python-3.x,selenium,webdriver,Python 3.x,Selenium,Webdriver,在网站中,我想访问“谁选择退出”字段。使用post的逻辑,我尝试了以下代码 第1版: ele2 = driver.find_element_by_xpath("//select[@id='Identity']/option[@value='Myself']") driver.execute_script("arguments[0].click()",ele2) 第2版: 驱动程序。通过xpath(//select[@id='Identity']/option[@value='mye

在网站中,我想访问“谁选择退出”字段。使用post的逻辑,我尝试了以下代码 第1版:

 ele2 = driver.find_element_by_xpath("//select[@id='Identity']/option[@value='Myself']") 
    driver.execute_script("arguments[0].click()",ele2)
第2版:

驱动程序。通过xpath(//select[@id='Identity']/option[@value='myelf'])查找元素。单击()

我得到的错误是:

Traceback (most recent call last):
  File "website-functions/acxiom.py", line 51, in <module>
    acxiom_DD_formfill(title, firstname, middlename, lastname, suffix, email)
  File "website-functions/acxiom.py", line 30, in acxiom_DD_formfill
    driver.find_element_by_xpath("//select[@id='Identity']/option[@value='Myself']").click()
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
    'value': value})['value']
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//select[@id='Identity']/option[@value='Myself']"}     
  (Session info: headless chrome=80.0.3987.87)

谢谢你的帮助

以下是正确的xpath

//select[@name='Identity']/option[@value = 'Submitter']
屏幕截图:

属性值是
提交者
而不是
我自己
,它是选项节点的文本。这就是为什么会出现错误

ele = driver.find_element_by_xpath("//select[@name='Identity']/option[@value = 'Submitter']")
driver.execute_script("arguments[0].click()",ele) # using js click so that item will be selected though it's not visible.

请参考下面的解决方案从下拉框中选择值。您可以传递选项值并使用下拉菜单选择它

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome("C:\New folder\chromedriver.exe")

driver.get("https://isapps.acxiom.com/optout/optout.aspx#section8")

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//select[@id='Identity']/option[contains(text(),'Who is opting out?')]"))).click();

检查
//select[@id='Identity']/选项[@value='myelf']
xpath是否在chrome开发工具中工作。您可以参考post了解如何在devtools中检查xpath/css。谢谢,所以版本2似乎适合您,但它会为我产生上面的错误。你知道我如何用我的代码解决这个问题吗?
//select[@id='Identity']/option[@value='myelf']
正在使用XPath 1.0,因此你应该会看到相同的行为。请检查下面的答案。谢谢,这很有效!那么,我怎么能让selenium选择“我自己”选项呢?@datasciencelearner:如果它对您有效,您可以点击upvote按钮吗?
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome("C:\New folder\chromedriver.exe")

driver.get("https://isapps.acxiom.com/optout/optout.aspx#section8")

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//select[@id='Identity']/option[contains(text(),'Who is opting out?')]"))).click();