如何在selenium webdriver Python中用鼠标点击第2层元素?
How to click on the 2nd layer of element with mouse in selenium webdriver Python?
我有一个代码假设 'Mouse Over' 元素的第一层,然后单击当您执行 'Mouse Over' 操作时出现的元素的第二层。如果我执行下面的代码,它总是显示错误 'NoSuchElementException: Message: Unable to locate element: .e'。 请帮助理解我做错了什么。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
def select_random_sentence_to_delete(self):
self.driver = webdriver.Firefox()
self.driver.get('http://todomvc.com/examples/react/#/')
action = ActionChains(self.driver);
firstLevelMenu = self.driver.find_element(By.CLASS_NAME, "view"[2])
action.move_to_element(firstLevelMenu).perform()
secondLevelMenu = self.driver.find_element(By.CLASS_NAME, "destroy"[2])
action.move_to_element(secondLevelMenu).perform()
secondLevelMenu.click() ```
您需要链接操作,并且只有在所有操作之后您才perform()
:
driver.get("http://todomvc.com/examples/react/")
for i in range(10):
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".new-todo")))
driver.find_element(By.CSS_SELECTOR, ".new-todo").send_keys(i, Keys.ENTER)
WebDriverWait(driver,30).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".view input")))
for ele in driver.find_elements(By.CSS_SELECTOR, ".view input"):
ele.click()
actions = ActionChains(driver)
actions.move_to_element(ele).move_to_element(driver.find_element(By.CSS_SELECTOR, ".destroy")).click().perform()
注意:我添加了 WebDriverWait
所以你也需要导入它。
这里是导入:
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
我有一个代码假设 'Mouse Over' 元素的第一层,然后单击当您执行 'Mouse Over' 操作时出现的元素的第二层。如果我执行下面的代码,它总是显示错误 'NoSuchElementException: Message: Unable to locate element: .e'。 请帮助理解我做错了什么。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
def select_random_sentence_to_delete(self):
self.driver = webdriver.Firefox()
self.driver.get('http://todomvc.com/examples/react/#/')
action = ActionChains(self.driver);
firstLevelMenu = self.driver.find_element(By.CLASS_NAME, "view"[2])
action.move_to_element(firstLevelMenu).perform()
secondLevelMenu = self.driver.find_element(By.CLASS_NAME, "destroy"[2])
action.move_to_element(secondLevelMenu).perform()
secondLevelMenu.click() ```
您需要链接操作,并且只有在所有操作之后您才perform()
:
driver.get("http://todomvc.com/examples/react/")
for i in range(10):
WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".new-todo")))
driver.find_element(By.CSS_SELECTOR, ".new-todo").send_keys(i, Keys.ENTER)
WebDriverWait(driver,30).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".view input")))
for ele in driver.find_elements(By.CSS_SELECTOR, ".view input"):
ele.click()
actions = ActionChains(driver)
actions.move_to_element(ele).move_to_element(driver.find_element(By.CSS_SELECTOR, ".destroy")).click().perform()
注意:我添加了 WebDriverWait
所以你也需要导入它。
这里是导入:
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC