我编写了这个简单的测试代码,只有在元素完全加载时才会点击它:
driver = webdriver.Firefox(executable_path="geckodriver.exe")
driver.get("https://watch.nba.com/")
team = driver.find_element_by_xpath("//*[@title='Bucks']")
over = team.find_element_by_xpath('..').find_element_by_xpath('..').find_element_by_xpath('..').find_element_by_class_name("watchgame")
WebDriverWait(driver, 10).until(EC.visibility_of(over))
over.click()
代码很有效,所以我将它复制到我的实际代码中,用第一行代替:
driver = webdriver.PhantomJS()
问题是现在元素 over 从未变得可见,而且我总是得到:
selenium.common.exceptions.TimeoutException
即使增加等待时间。
我还读到,使用PhantomJS元素不需要是可见的,但是存在,所以我写了这个:
WebDriverWait(self.driver, 30).until(EC.presence_of_element_located((By.CLASS_NAME, "watchgame")))
over.click()
但是这次我得到了:
ElementNotVisibleException
你能帮助我吗?