如何在selenium python中等到元素可用

时间:2017-05-28 11:06:42

标签: python selenium xpath selenium-webdriver

我正在使用selenium python编写脚本,但有问题我试图找到解决方案,但我找不到对我有帮助的。这是代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import unittest
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

class sulekhastart(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_parse_contact_urls_and_go_to_next_page(self):

        pagenumber = 'Page'

        #assign WEBDRIVER to local webdriver
        driver = self.driver

        #Website open by below url
        driver.get("http://www.sulekha.com/ac-dealers/bangalore")
        self.assertIn("Sulekha Bangalore", driver.title)

        #close the lightbox thnat appears at the firsttime load of page
        startlightbox = driver.find_element_by_xpath('//a[@class="lcf-close"]')
        startlightbox.click()

        while True:

            #get the page number
            pageno = driver.find_element_by_xpath('//li[@id="numberPage"]/strong')
            print pageno.text
            print pagenumber

            #check if page same as last page or not
            if str(pageno.text) != pagenumber:

                pagenumber = str(pageno.text)

                businessname = driver.find_elements_by_xpath('//li/div/div[@class="busi-name"]/h3/a')
                records = len(businessname)

                #print all data that are available on the webpage
                for i in range(0,records):
                    print businessname[i].get_attribute('href')
                    print businessname[i].text

                nextpage = driver.find_element_by_xpath('//li[@id="nextPage"]')
                nextpage.click()
            else:
                print 'This is last page all data is scraped change url and get another data'
                break

            element = WebDriverWait(driver, 10).until_not(EC.presence_of_element_located((By.XPATH, "/html/body/div/div/svg")))

    def tearDown(self):
        self.driver.close()
        print 'page not be closed'

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

并且我想在点击下一个按钮后等待脚本,直到By.XPATH, "/html/body/div/div/svg"此元素从DOM或页面源中消失,然后等到3秒后

1 个答案:

答案 0 :(得分:0)

作为andersson评论

替换

element = WebDriverWait(driver, 10).until_not(
            EC.presence_of_element_located((
              By.XPATH, "/html/body/div/div/svg")))

element = WebDriverWait(driver, 10).until_not(
            EC.presence_of_element_located((
              By.XPATH, "/html/body/div/div/*[name()='svg']")))

解决问题