首页 > 解决方案 > 相同的代码,不同的计算机,不同的结果。Selenium 找不到网页元素

问题描述

制作了一个机器人来帮助在 Craigslist 上发帖。在我的 Mac 和我的电脑上,它可以很好地拾取 Web 元素并可以与它们进行交互。在我的工作电脑上,它根本找不到它们或与它们交互。我已经按类、xpath 和完整 xpath 完成了它,而这几乎是仅有的 3 个选项。此外,如果我让它继续过去,然后继续到下一页,它将与错误的元素交互。我已经检查了所有屏幕上的分辨率,所以它们匹配并且我束手无策。我添加了 2 个不断中断的功能。我在 try: except 块下的主循环中运行它们。postad 功能......好吧,它根本找不到元素和下拉菜单,它点击了错误的元素。但要明确的是,这些在我的 MAC 和我的 PC 上工作得很好,但是当我把它带到我的工作电脑上时,它一直在坏。我确保所有内容都已正确更新和安装。我知道我可以使用 pyautogui 但如果可能的话我希望只使用硒。但是我会尝试任何东西,有没有人可以帮助这个可怜的光滑大脑?

def postad(self):
    #The login portion of the bot
    post = self.browser.find_element_by_id("post")
    self.browser.implicitly_wait(3)
    time.sleep(random.randint(1, 2))
    post.click()
    house = self.browser.find_element_by_xpath("/html/body/article/section/form/ul/li[4]/label/span[1]/input")
    house.click()
    self.browser.implicitly_wait(3)
    time.sleep(random.randint(2, 4))
    house2 = self.browser.find_element_by_xpath('//*[@id="new-edit"]/div/label/label[2]/input')
    house2.click()
    self.browser.implicitly_wait(3)

def dropDowns(self):
    time.sleep(0.5)
    laundry = self.browser.find_element_by_xpath('//*[@id="ui-id-2-button"]/span[2]')
    laundry.click()
    time.sleep(random.randint(1, 3))
    wd_in_unit = self.browser.find_element_by_id('ui-id-12')
    wd_in_unit.click()
    time.sleep(random.randint(1, 3))
    parking = self.browser.find_element_by_xpath('/html/body/article/section/form/div/div/fieldset[1]/div/div[2]/label[3]/span/span[2]')
    parking.click()
    time.sleep(random.randint(1, 3))
    carport = self.browser.find_element_by_id('ui-id-18')
    carport.click()
    time.sleep(random.randint(1, 3))
    bedrooms = self.browser.find_element_by_xpath('/html/body/article/section/form/div/div/fieldset[1]/div/div[2]/label[4]/span/span[2]')
    bedrooms.click()
    time.sleep(random.randint(1, 3))
    if self.choice == 1 :
        onebd = self.browser.find_element_by_id('ui-id-27')
        onebd.click()
    elif self.choice == 2:
        twobd = self.browser.find_element_by_id('ui-id-28')
        twobd.click()
    else:
        threebd = self.browser.find_element_by_id('ui-id-29')
        threebd.click()
    bathrooms = self.browser.find_element_by_xpath('/html/body/article/section/form/div/div/fieldset[1]/div/div[2]/label[5]/span/span[1]')
    bathrooms.click()
    time.sleep(random.randint(1, 3))
    if self.choice == 1:
       onebth = self.browser.find_element_by_id('ui-id-38')
       onebth.click()
    else:
        twobth = self.browser.find_element_by_id('ui-id-40')
        twobth.click()

标签: pythonseleniumgoogle-chromeselenium-webdriver

解决方案


推荐阅读