Python Selenium .click() 在使用 ActionChains 后不工作
Python Selenium .click() not working after using ActionChains
我正在 Youtube 上进行搜索,然后按几个 TAB,然后通过 ActionChains 按几个 END...然后我想获取结果,如果我找到我想要的,我想要点击它。
driver.get('https://www.youtube.com')
time.sleep(4)
items = driver.find_element(By.XPATH, "//input[@id='search']")
rand = random.choice(query)
items.send_keys(rand)
items.send_keys(Keys.RETURN)
time.sleep(2)
action = ActionChains(driver)
for i in range(5):
action.send_keys(Keys.TAB)
action.perform()
time.sleep(1)
for i in range(3):
action.send_keys(Keys.END)
action.perform()
time.sleep(4)
items = driver.find_elements(By.XPATH, "//div[@id='primary']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")
for i in items:
if ......... :
i.click()
通常,使用后:driver.find_elements(By.XPATH....
我可以做一个
for i in items:
if ...... :
i.click()
但是现在它不起作用了,因为我一直在使用 action = ActionChains(driver)
我收到此错误:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
我找到了答案,问题出在 youtube 而不是 selenium。 i.click() 有效,问题是我的 find_elements(By.XPATH, ... youtube 也有主页上的不可见元素,这些元素包含在结果页面中,这给了我不可见的项目.
一旦我将 XPATH 更改为:
//ytd-search[@class='style-scope ytd-page-manager']//div[@id='primary']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")
有效
我正在 Youtube 上进行搜索,然后按几个 TAB,然后通过 ActionChains 按几个 END...然后我想获取结果,如果我找到我想要的,我想要点击它。
driver.get('https://www.youtube.com')
time.sleep(4)
items = driver.find_element(By.XPATH, "//input[@id='search']")
rand = random.choice(query)
items.send_keys(rand)
items.send_keys(Keys.RETURN)
time.sleep(2)
action = ActionChains(driver)
for i in range(5):
action.send_keys(Keys.TAB)
action.perform()
time.sleep(1)
for i in range(3):
action.send_keys(Keys.END)
action.perform()
time.sleep(4)
items = driver.find_elements(By.XPATH, "//div[@id='primary']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")
for i in items:
if ......... :
i.click()
通常,使用后:driver.find_elements(By.XPATH....
我可以做一个
for i in items:
if ...... :
i.click()
但是现在它不起作用了,因为我一直在使用 action = ActionChains(driver)
我收到此错误:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
我找到了答案,问题出在 youtube 而不是 selenium。 i.click() 有效,问题是我的 find_elements(By.XPATH, ... youtube 也有主页上的不可见元素,这些元素包含在结果页面中,这给了我不可见的项目.
一旦我将 XPATH 更改为:
//ytd-search[@class='style-scope ytd-page-manager']//div[@id='primary']//a[@id='thumbnail'][@class='yt-simple-endpoint inline-block style-scope ytd-thumbnail'][contains(@href, 'watch?v=')]")
有效