天天看點

Note3:selenium+python滑鼠懸停+點選隐藏按鈕的3種方式

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver import ActionChains

# driver= webdriver.Firefox()
driver= webdriver.Chrome()
driver.get("https://www.baidu.com/")
driver.maximize_window()


driver.find_element_by_xpath("//*[@id=\"kw\"]").send_keys("selenium")
driver.find_element_by_xpath("//*[@id=\"kw\"]").submit()


#滑鼠懸停+點選隐藏的按鈕
#1.滑鼠放上去
time.sleep(2)
# above=driver.find_element_by_xpath("//span[@id=\"s-usersetting-top\"]")
above=driver.find_elements_by_xpath("//*[text()=\"設定\"]")[1]
ActionChains(driver).move_to_element(above).perform()

SearchSetting_Ele=driver.find_element_by_xpath("//*[text()=\"搜尋設定\"][1]")
SearchSetting_Ele.click()

#2.利用JS改變頁面屬性,例如輸入日期沒必要測試第三方控件,不是我們測試範圍的話,就可以改變控件屬性改成輸入日期。不常用,實在是沒有辦法才用
# js2 = 'document.querySelectorAll("div#head #s-user-setting-menu")[0].style.display="block";'
# driver.execute_script(js2)

#3.利用JQery滑鼠懸停方法
# js1 = "$('#s-usersetting-top').mouseover()"  # jQuery 模拟滑鼠懸停
# driver.execute_script(js1)

time.sleep(2)
# driver.find_elements_by_xpath("//*[text()='進階搜尋']")[1].click()
driver.find_element_by_xpath("(//*[text()='進階搜尋'])[2]").click()
driver.find_element_by_xpath("//*[@id=\"adv_keyword\"]").send_keys("包含全部關鍵詞")
driver.find_element_by_xpath("//input[@class=\"c-input adv-q-input switch-input\" and @name=\"q2\"]").send_keys("包含完整關鍵詞")
driver.find_element_by_xpath("//input[@class=\"c-input adv-q-input switch-input\" and @name=\"q3\"]").send_keys("包含任意關鍵詞")
driver.find_element_by_xpath("//div[@class=\"c-select-selection\"]/i[1]").click()
driver.find_element_by_xpath("//p[@class=\"c-select-item\" and @data-for=\"gpc\"][4]").click()
driver.find_element_by_xpath("(//i[@class=\"c-icon c-select-arrow\"])[2]").click()
driver.find_element_by_xpath("//*[text()=\"所有格式\"]").click()
driver.find_element_by_xpath("//*[@id=\"q5_2\"]").click()
# driver.find_element_by_xpath("//*[@value=\"進階搜尋\"]").click()
# time.sleep(2)
driver.find_element_by_xpath("//*[@class=\"item\" and @data-tabid=\"general\"]").click()
driver.find_element_by_xpath("//*[text()=\"儲存設定\"]").click()
           
第二種方法可能行不通,因為隐藏的按鈕在頁面加載後還沒有被渲染,所有找不到該元素就無法修改其屬性。----修正:該方案可用,前提是先把滑鼠懸停上去(前置條件),然後就可以找到