【问题标题】:selenium.common.exceptions.InvalidSelectorException: Message: An invalid or illegal selector was specifiedselenium.common.exceptions.InvalidSelectorException:消息:指定了无效或非法的选择器
【发布时间】:2019-06-17 16:24:12
【问题描述】:

我正在尝试编写一个脚本来处理具有多个元素的网页。单击此元素后,将打开一个新窗口。但是我的脚本在识别元素方面存在问题。我需要帮助来定位元素并处理多个窗口

我尝试使用 Chrome 查找 Xpath,但它在 Internet Explorer 中不一样。我也尝试过使用 CSS 选择器,但它不起作用。说无效。

函数 test_google_search_page 的代码: def test_google_search_page(self): 司机=self.driver driver.get("http://xxxx.com") str1=driver.title 打印(str1)

    #get the window handles using window_handles
    window_before=driver.window_handles[0]
    print(window_before)

    #driver.find_element_by_xpath("//*                   [@id='2ccb50dfc61122820032728dcea648fe']/div/div")
    driver.find_element_by_css_selector("#\32  ccb50dfc61122820032728dcea648fe > div > div")
    window_after=driver.window_handles[1]

    driver.switch_to.window(window_after)
    str2=driver.title
    print(str2)
    print(window_after)

    self.assertNotEqual(str1,str2)
    print('This window has a different title')
    driver.switch_to.window(window_before)

    self.assertEqual(str1,driver.title)
    print('Returned to parent window. Title now match')



ERROR: test_google_search_page (__main__.GoogleOrgSearch)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\PSWN672P\AppData\Local\Programs\Python\Python37\Python programs\SNOW2.py", line 21, in test_google_search_page
    driver.find_element_by_css_selector("#\32 ccb50dfc61122820032728dcea648fe > div > div")
  File "C:\Users\PSWN672P\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 598, in find_element_by_css_selector
    return self.find_element(by=By.CSS_SELECTOR, value=css_selector)
  File "C:\Users\PSWN672P\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\Users\PSWN672P\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\PSWN672P\AppData\Local\Programs\Python\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: An invalid or illegal selector was specified

【问题讨论】:

    标签: python css selenium


    【解决方案1】:

    您的#\32 ccb50dfc61122820032728dcea648fe > div > div CSS 选择器确实无效。请参考the CSS selector grammar specification

    您的意思是:#2ccb50dfc61122820032728dcea648fe > div > div?尽管如此,如果不查看您尝试定位的页面和元素的 HTML 源代码,就不可能为您提供特定的正确选择器。

    2ccb50dfc61122820032728dcea648fe id 本身虽然看起来是自动生成的,但您可能应该寻找替代定位器来找到所需的元素,本主题可能有助于了解如何使用 selenium 定位元素:

    【讨论】:

    【解决方案2】:

    此错误消息...

    driver.find_element_by_css_selector("#\32 ccb50dfc61122820032728dcea648fe > div > div")
    .
    selenium.common.exceptions.InvalidSelectorException: Message: An invalid or illegal selector was specified
    

    ...暗示 CssSelector 不是一个有效的。

    在存在相关 HTML 的情况下构建最适合的 CssSelector 会更容易。但是根据您的代码试验:

    • \32 因为 Id 的值看起来不正确。
    • ccb50dfc61122820032728dcea648fe 是动态生成的内容。所以也不能用。

    在这里你可以找到CSS Selector Reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多