Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python selenium中的NoTouchElementException(<;span>;事件<;/span>;)_Python_Selenium_Selenium Webdriver - Fatal编程技术网

python selenium中的NoTouchElementException(<;span>;事件<;/span>;)

python selenium中的NoTouchElementException(<;span>;事件<;/span>;),python,selenium,selenium-webdriver,Python,Selenium,Selenium Webdriver,当我试图单击图中突出显示的事件选项卡时,它会给我一个错误。下面是脚本 from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get("https://*****.service-now.com/") driver.switch_to.frame('gsft_main') driver.find_element_by_id('user_name').send_keys('

当我试图单击图中突出显示的事件选项卡时,它会给我一个错误。下面是脚本

from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://*****.service-now.com/")
driver.switch_to.frame('gsft_main')
driver.find_element_by_id('user_name').send_keys('*****')
driver.find_element_by_id('user_password').send_keys('*****')
driver.find_element_by_id('sysverb_login').click()
Incident=driver.find_element_by_link_text('Incident')
这是我在检查页面后复制时得到的元素

<span>Incident</span>
两者都试过了,但都没有成功。给我下面的错误`

Traceback (most recent call last):    
  File "Test1.py", line 10, in <module>    
    Incident=driver.find_element_by_link_text('Incident')    
  File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 428, in find_element_by_link_text
    return self.find_element(by=By.LINK_TEXT, value=link_text)    
  File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element 'value': value})['value']    
  File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)    
  File "C:\Python37\lib\site-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":"link text","selector":"Incident"}
回溯(最近一次呼叫最后一次):
文件“Test1.py”,第10行,在
事件=驱动程序。通过链接文本(“事件”)查找元素
文件“C:\Python37\lib\site packages\selenium\webdriver\remote\webdriver.py”,第428行,按链接查找元素
返回self.find\u元素(by=by.LINK\u TEXT,value=LINK\u TEXT)
文件“C:\Python37\lib\site packages\selenium\webdriver\remote\webdriver.py”,第978行,在find_元素'value':value})['value']
文件“C:\Python37\lib\site packages\selenium\webdriver\remote\webdriver.py”,第321行,执行
self.error\u handler.check\u响应(响应)
文件“C:\Python37\lib\site packages\selenium\webdriver\remote\errorhandler.py”,第242行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“链接文本”,“选择器”:“事件”}

通过链接文本()查找元素()
通过部分链接文本()查找元素()
仅适用于
标记,您的元素是
。您需要使用xpath来定位它

incident = driver.find_element_by_xpath('//span[contains(., "Incident")]')
由于您被导航到另一个页面,因此还应该添加一些等待

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.by import By

wait = WebDriverWait(driver, 10)
incident = wait.until(ec.visibility_of_element_located((By.XPATH, '//span[contains(., "Incident")]')))

文本为事件的元素实际上位于
节点内。虽然它位于父级
中:

  • 使用
    CSS\u选择器

    incident = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[id^='concourse_application_dead']>a>span")))
    
  • 使用
    XPATH
    A:

    incident = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='Incident']")))
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

参考文献 您可以在以下内容中找到详细的相关讨论:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC