使用ActionChains的Selenium Python

时间:2018-07-20 13:15:32

标签: python selenium

enter image description here我提供的代码打开一个网站,并使用actionChains,在桌面上单击鼠标右键,弹出菜单。现在,我需要使用actionChains再做3件事。我需要将鼠标悬停在显示“保存页面WE”的项目上,然后在弹出的子菜单上单击一个项目,然后按Enter键。谁能告诉我该怎么做?谢谢

from selenium import webdriver

    from selenium.webdriver import ActionChains
    fp = webdriver.FirefoxProfile('/Users/Jake/AppData/Roaming/Mozilla/Firefox/Profiles/emjx467y.default-1524932841911')
    driver = webdriv[enter link description here][1]er.Firefox(fp)
    driver.get('http://www.tradingview.com/screener')
    element = driver.find_element_by_link_text('Screener')
    actionChains = ActionChains(driver)
    actionChains.context_click(element).perform()

1 个答案:

答案 0 :(得分:0)

使用以下行:actionChains.context_click(element).perform(),您正在尝试右键单击 Screener 菜单。但是理想的行为应该是对其进行悬停,然后从3中选择一个选项。

我正在选择 Forex Screener ,您可以根据需要选择任意一个。

要悬停,您可以尝试以下代码:

actionChains.move_to_element(element).perform()  

完整代码如下:

driver.get("http://www.tradingview.com/screener")  
wait = WebDriverWait(driver,40)

driver.find_element_by_css_selector("span[class*='tv-header__dropdown-wrap--noarrow'] span[class$='lang-icon--current-lang']").click()
wait.until(EC.element_to_be_clickable((By.XPATH, "//span[text()='English (UK)']/parent::a"))).click()
element = driver.find_element_by_link_text('Screener')
actionChains = ActionChains(driver)
actionChains.move_to_element(element).perform()

wait.until(EC.element_to_be_clickable((By.LINK_TEXT, "Forex Screener"))).click()  

请确保导入以下内容:

from selenium import webdriver
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 
from selenium.webdriver.common.action_chains import ActionChains