在Ajax方式產生的浮動框中,單擊選擇包含某個關鍵字的選項

 目的:

有些被測試也你按包好Ajax的局部刷新機制,並且會產生顯示多條數據的浮動框,需要單機選擇浮動框中包含某個關鍵字的選項

測試網址:

http://www.sogou.com

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


class TestDemo(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_execut(self):
        url = "https://www.sogou.com/"

        self.driver.get(url)

        # 找到輸入框
        searchBox = self.driver.find_element_by_id("query")
        time.sleep(2)
        # 在輸入框輸入內容
        searchBox.send_keys("河北")

        time.sleep(2)

        # 你想點擊第幾個輸入框的內容 就循環幾次
        for i in range(3):
            searchBox.send_keys(Keys.DOWN)
            time.sleep(1)
        searchBox.send_keys(Keys.ENTER)
        time.sleep(3)

    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':
    unittest.main()

 方法二 通過匹配模糊內容選擇懸浮框中的選項

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest
import traceback
import time


class TestDemo(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_execut(self):
        url = "https://www.sogou.com/"

        self.driver.get(url)
        try:
            searchBox = self.driver.find_element_by_id("query")
            searchBox.send_keys("河北")

            time.sleep(2)

            suggetion_option = self.driver.find_element_by_xpath("//ul/li[contains(.,'疫情')]")
            time.sleep(3)
            suggetion_option.click()
            time.sleep(5)
        except NoSuchElementException as e:
            # 打印異常堆棧信息
            print(traceback.print_exc())

    def tearDown(self):
        self.driver.quit()


if __name__ == '__main__':
    unittest.main()

  

還有一種情況:就是在ajax彈出框裏我們的內容是經常改變的,但是我們就是想打開第三個搜索結果的 就將第二個裏面的 xpath 改一下

suggetion_option = self.driver.find_element_by_xpath("//*[@id='vl']/div[1]/ul/li[4]")

  

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章