Python关于selenium,改一下运行出来,我的运行失败了


import unittest

from time import sleep

from selenium import webdriver
from selenium.webdriver.common.by import By

class TestIweb(unittest.TestCase):
    #修改密码
    def test_update_pwd(self):
        driver = webdriver.Edge()
        driver.maximize_window()
        sleep(3)
        driver.get("http://49.232.5.103")
        sleep(3)
        driver.find_element(By.LINK_TEXT,"登录").click()
        sleep(3)
        driver.find_element(By.LINK_TEXT,"忘记密码").click()
        sleep(3)
        driver.find_element(By.NAME, "username").send_keys("liulaoshi")
        sleep(3)
        driver.find_element(By.NAME, "email").send_keys("123@qq.com")
        sleep(3)
        title = driver.title
        self.assertEqual("修改密码",title)
        sleep(5)
        driver.quit()
    def test_new(self):
        driver = webdriver.Edge()
        driver.maximize_window()
        sleep(3)
        driver.get("http://49.232.5.103")
        el_a = driver.find_element(By.CSS_SELECTOR,".red [href='/index.php?controller=site&action=products&id=67']")
        title = el_a[1].getArribute("title")
        self.assertEqual("2014韩版爆款双肩包时尚韩版学院风情真皮女包休闲包",title)
        price = driver.find_element(By.CSS_SELECTOR,
                                     ".red li:has([href='/index.php?controller=site&action=products&id=67']) b").text
        self.assertNotEqual("",price)
        self.assertIsNotNone(price)
        self.assertGreater(float(price.split("¥")[1]),1)
        el_a[1].click()
        sleep(3)
        click_title = driver.find_element(By.CSS_SELECTOR,".summary>h2").text
        self.assertEqual(title,click_title)
        sleep(5)
        driver.quit()

img

改成下面的就可以了,里面有注释

    def test_new(self):
        driver = webdriver.Edge()
        driver.maximize_window()
        #sleep(3)
        driver.get("http://49.232.5.103/index.php?controller=site&action=search_list&word=%E7%9C%9F%E7%9A%AE%E5%A5%B3%E5%8C%85")
        #改为find_elements,防止找不对对象出错
        el_a = driver.find_elements(By.CSS_SELECTOR,"a[href='/index.php?controller=site&action=products&id=67']")
        if len(el_a)==0:
            print('页面中不存在指定css选择器dom')
            return
        title = el_a[0].get_attribute("title")
        #print(title)
        self.assertEqual("2014韩版爆款双肩包时尚韩版学院风情真皮女包休闲包",title)

        goodsItems=el_a[1].find_element(By.XPATH,'../..')##找到li节点
        #通过父节点定位加个节点,下面那个选择器错的
        price=goodsItems.find_element(By.CSS_SELECTOR,'.price').text.strip()
    

        #price = driver.find_element(By.CSS_SELECTOR,
        #                             ".red li:has([href='/index.php?controller=site&action=products&id=67']) b").text
        self.assertNotEqual("",price)
        self.assertIsNotNone(price)
        self.assertGreater(float(price.split("¥")[1]),1)
        el_a[1].click()
        sleep(3)
        click_title = driver.find_element(By.CSS_SELECTOR,".summary>h2").text
        self.assertEqual(title,click_title)
        sleep(5)

        driver.quit()

el_a[1].getArribute("title") 改为 el_a.get_attribute("title")。el_a[1].click() 改为el_a.click() 试一下

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^