XPath Selenium Python出现ElementNotVisibleException错误

时间:2019-11-07 06:11:34

标签: python-3.x selenium

嗨,我正在剪贴一个网站,并且正在使用Selenium python。代码如下

url ='https://www.hkexnews.hk/'

options = webdriver.ChromeOptions()
browser = webdriver.Chrome(chrome_options=options, executable_path=r'chromedriver.exe')
browser.get(url)

tier1 = browser.find_element_by_id('tier1-select')
tier1.click()

tier12 = browser.find_element_by_xpath('//*[@data-value="rbAfter2006"]')
tier12.click()

time.sleep(1)

tier2 = browser.find_element_by_id('rbAfter2006')
tier2.click()

tier22 = browser.find_element_by_xpath("//*[@id='rbAfter2006']//*[@class='droplist-item droplist-item-level-1']//*[text()='Circulars']")
tier22.click()

tier23 = browser.find_element_by_xpath("//*[@id='rbAfter2006']//*[@class='droplist-item droplist-item-level-2']//*[text()='Securities/Share Capital']")
tier23.click()

tier24 = browser.find_element_by_xpath("//*[@id='rbAfter2006']//*[@class='droplist-group droplist-submenu level3']//*[text()='Issue of Shares']")
tier24.click()

通过显示ElementNoVisibleException,它在tier23处停止工作。我尝试了不同的课程,但似乎无法正常工作。谢谢您的帮助

1 个答案:

答案 0 :(得分:2)

XPath可以选择两个元素。第一个是隐藏的。请尝试以下选择所需的元素:

tier23 = browser.find_element_by_xpath("//*[@id='rbAfter2006']//li[@aria-expanded='true']//*[@class='droplist-item droplist-item-level-2']//*[text()='Securities/Share Capital']")

或更短

tier23 = browser.find_element_by_xpath("//li[@aria-expanded='true']//a[.='Securities/Share Capital']")
tier23.location_once_scrolled_into_view
tier23.click()

P.S。请注意,该选项仍然不可见,因为您需要先向下滚动列表。我为此目的使用了tier23.location_once_scrolled_into_view

另外,最好使用内置的Waits而不是time.sleep

相关问题