Python selenium.webdriver.common.by.By 模块,XPATH 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用selenium.webdriver.common.by.By.XPATH

项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def get_element(self, selector):
        '''
        Gets element by CSS selector.

        Parameters
        ----------
        selector: str
            A CSS/XPATH selector to search for. This can be any valid CSS/XPATH selector.

        Returns
        -------
        selenium.webdriver.remote.webelement.WebElement
            A selenium element object.

        '''
        elem = self.find_element(selector)
        if elem:
            return WebRunnerElement(elem._parent, elem._id, elem._w3c)
        else:
            raise NoSuchElementException
项目:webtesting    作者:madlenkk    | 项目源码 | 文件源码
def verify_user_logged_in(selenium):
    # kdyz potrebujeme otestovat, ze na strance je nejaky konkretni element
    # el = selenium.find_element_by_xpath('//*[@id="messages"]/div/div')
    # vynechame nefunkcni identifikatory pro pripad, ze se zmeni HTML sablona
    el = selenium.find_element_by_id('messages')

    # kdyz potrebujeme zjistit, ze element obsahuje konkretni text
    assert 'Welcome back' in el.text


    # # ExplicitWait - kdyz se nahravaji veci pomoci JavaScriptu a nereloadne se cela stranka
    # WebDriverWait(selenium, 2).until(
    #     EC.text_to_be_present_in_element((By.XPATH, '//*[@id="messages"]/div/div'), 'Welcome back')
    # )

    # # kdyz potrebujeme otestovat, ze na strance neco neni
    # from selenium.common import exceptions
    # with pytest.raises(exceptions.NoSuchElementException, message='UNEXPECTED ELEMENT PRESENT'):
    #     # musi hodit vyjimku, jinak failed
    #     selenium.find_element_by_xpath('//*[@id="messages"]/div/div')
项目:python3_crawl    作者:princewen    | 项目源码 | 文件源码
def login():
    """??????,??????????"""
    driver.get(start_url)
    wait = WebDriverWait(driver,10)
    try:
        username = wait.until(EC.presence_of_element_located((By.ID,"loginname")))
        password = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="pl_login_form"]/div/div[3]/div[2]/div/input')))
        username.send_keys(user)
        password.send_keys(passwd)
        btn = wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="pl_login_form"]/div/div[3]/div[6]/a/span')))
        btn.click()
    except TimeoutException:
        print ("??")
        return
    except NoSuchElementException:
        print ("?????? ")
        return
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def find_element(self, selector):
        '''
        Finds an element by CSS/XPATH selector.

        Parameters
        ----------
        selector: str
            A CSS/XPATH selector to search for. This can be any valid CSS/XPATH selector.

        Returns
        -------
        selenium.webdriver.remote.webelement.WebElement or None
            Returns an element or nothing at all

        '''
        elem = None
        try:
            if selector.startswith('/'):
                elem = self.browser.find_element_by_xpath(selector)
            else:
                elem = self.browser.find_element_by_css_selector(selector)
        except NoSuchElementException:
            pass

        return elem
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def find_elements(self, selector):
        '''
        Finds elements by CSS/XPATH selector.

        Parameters
        ----------
        selector: str
            A CSS/XPATH selector to search for. This can be any valid CSS/XPATH selector.

        Returns
        -------
        list of selenium.webdriver.remote.webelement.WebElement or list
            Returns a list of elements or empty list

        '''
        elems = []
        try:
            if selector.startswith('/'):
                elems = self.browser.find_elements_by_xpath(selector)
            else:
                elems = self.browser.find_elements_by_css_selector(selector)
        except NoSuchElementException:
            pass

        return elems
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def wait_for_presence(self, selector='', **kwargs):
        '''
        Wait for an element to be present. (Does not need to be visible.)

        Parameters
        ----------
        selector: str
            A CSS selector to search for. This can be any valid CSS selector.

        kwargs:
            Passed on to _wait_for

        '''
        if selector.startswith('/'):
            by = By.XPATH
        else:
            by = By.CSS_SELECTOR
        self._wait_for(EC.presence_of_element_located((by, selector)) or
                       EC.presence_of_elements_located((by, selector)),
                       **kwargs)
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def wait_for_visible(self, selector='', **kwargs):
        '''
        Wait for an element to be visible.

        Parameters
        ----------
        selector: str
            A CSS selector to search for. This can be any valid CSS selector.

        kwargs:
            Passed on to _wait_for

        '''
        if selector.startswith('/'):
            by = By.XPATH
        else:
            by = By.CSS_SELECTOR
        self._wait_for(EC.visibility_of_element_located((by, selector)),
                       **kwargs)
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def wait_for_invisible(self, selector='', **kwargs):
        '''
        Wait for an element to be invisible.

        Parameters
        ----------
        selector: str
            A CSS selector to search for. This can be any valid CSS selector.

        kwargs:
            Passed on to _wait_for

        '''
        if selector.startswith('/'):
            by = By.XPATH
        else:
            by = By.CSS_SELECTOR
        self._wait_for(EC.invisibility_of_element_located((by, selector)),
                       **kwargs)
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def wait_for_text(self, selector='', text='', **kwargs):
        '''
        Wait for an element to contain a specific string.

        Parameters
        ----------
        selector: str
            A CSS selector to search for. This can be any valid CSS selector.

        text: str
            The string to look for. This must be precise.
            (Case, punctuation, UTF characters... etc.)
        kwargs:
            Passed on to _wait_for

        '''
        if selector.startswith('/'):
            by = By.XPATH
        else:
            by = By.CSS_SELECTOR
        self._wait_for(EC.text_to_be_present_in_element((by, selector),
                                                        text), **kwargs)
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def wait_for_text_in_value(self, selector='', text='', **kwargs):
        '''
        Wait for an element's value to contain a specific string.

        Parameters
        ----------
        selector: str
            A CSS selector to search for. This can be any valid CSS selector.

        text: str
            The string to look for. This must be precise.
            (Case, punctuation, UTF characters... etc.)
        kwargs:
            Passed on to _wait_for

        '''
        if selector.startswith('/'):
            by = By.XPATH
        else:
            by = By.CSS_SELECTOR
        self._wait_for(EC.text_to_be_present_in_element_value((by, selector),
                                                              text), **kwargs)
项目:PyWebRunner    作者:IntuitiveWebSolutions    | 项目源码 | 文件源码
def wait_for_selected(self, selector='', selected=True, **kwargs):
        '''
        Wait for an element (checkbox/radio) to be selected.

        Parameters
        ----------
        selector: str
            A CSS selector to search for. This can be any valid CSS selector.

        selected: bool
            Whether or not the element should be selected. Default True

        kwargs:
            Passed on to _wait_for

        '''
        if selector.startswith('/'):
            by = By.XPATH
        else:
            by = By.CSS_SELECTOR
        self._wait_for(EC.element_located_selection_state_to_be((by, selector),
                                                                selected), **kwargs)
项目:integration    作者:mendersoftware    | 项目源码 | 文件源码
def login(self, driver):
        if "login" not in driver.current_url:
            return
        mock_email    = auth.email
        mock_password = auth.password
        print("Logging in with credentials:")
        print("Email: " + mock_email)
        print("Password: " + mock_password)
        email_field = driver.find_element_by_id("email")
        email_field.click()
        email_field.send_keys(mock_email)
        password_field = driver.find_element_by_id("password")
        password_field.click()
        password_field.send_keys(mock_password)
        clicked = self.click_button(driver, "log in")
        if not clicked:
            clicked = self.click_button(driver, "create user")
        assert clicked
        xp = tag_contents_xpath("button", "Dashboard")
        element = self.wait_for_element(driver, By.XPATH, xp)
        assert element
项目:integration    作者:mendersoftware    | 项目源码 | 文件源码
def test_authorize_all(self):
        ui_test_banner()
        driver = self.init_driver()
        self.login(driver)
        assert self.click_button(driver, "Devices")
        self.click_button(driver, "Authorize 1 device", timeout=600)
        xp = "//table/tbody[@class='clickable']/tr/td[3]/div"
        authorized_device = self.wait_for_element(driver, By.XPATH, xp, timeout=600)
        assert authorized_device
        authorized_device.click()
        timeout = time.time() + (60*5)

        while time.time() < timeout:
            time.sleep(0.2)
            if self.wait_for_element(driver, By.XPATH, xp).text == "vexpress-qemu":
                break
        else:
            raise Exception("Device never appeared for authorization")

        print("Found authorized_device: '" + authorized_device.text + "'")
        assert authorized_device.text == "vexpress-qemu"
        ui_test_success()
        self.destroy_driver(driver)
项目:integration    作者:mendersoftware    | 项目源码 | 文件源码
def test_basic_inventory(self):
        ui_test_banner()
        driver = self.init_driver()
        self.login(driver)
        assert self.click_button(driver, "Devices")
        authorized_device = self.wait_for_element(driver, By.CSS_SELECTOR, "div.rightFluid.padding-right tbody.clickable > tr")
        assert authorized_device
        authorized_device.click()
        assert "vexpress-qemu" in authorized_device.text
        assert "mender-image-master" in authorized_device.text

        # make sure basic inventory items are there
        assert self.wait_for_element(driver, By.XPATH, "//*[contains(text(),'Linux version')]")
        assert self.wait_for_element(driver, By.XPATH, "//*[contains(text(),'eth0')]")
        assert self.wait_for_element(driver, By.XPATH, "//*[contains(text(),'ARM')]")
        ui_test_success()
        self.destroy_driver(driver)
项目:devsecops-example-helloworld    作者:boozallen    | 项目源码 | 文件源码
def validateLink(self, url, expectedText = None, expectedTitle = None, expectedUrl = None, \
        xpathContext = None):
        xpathContext = xpathContext if xpathContext else ""
        selector = ".//{1}a[@href='{0}']".format(url, xpathContext)
        if expectedText:
            self.assertTextPresent(By.XPATH, selector, expectedText)

        totalTries = self._followLinkMaxRetries + 1
        for i in range(0, totalTries):
            try:
                self.click(By.XPATH, selector, "Click {0}".format(expectedText), \
                    expectedURL = expectedUrl if expectedUrl else url)
                break
            except TimeoutException:
                retry = i + 1 # First 'try' is not a retry
                if retry < totalTries:
                    pass
        if expectedTitle:
            self.assertTitle(expectedTitle);
项目:devsecops-example-helloworld    作者:boozallen    | 项目源码 | 文件源码
def find_element_by_xpath(self, xpath):
        """Finds element by xpath.

        :Args:
            xpath - xpath of element to locate.  "//input[@class='myelement']"

        Note: The base path will be relative to this element's location.

        This will select the first link under this element.

        ::

            myelement.find_elements_by_xpath(".//a")

        However, this will select the first link on the page.

        ::

            myelement.find_elements_by_xpath("//a")

        """
        return self.find_element(by=By.XPATH, value=xpath)
项目:devsecops-example-helloworld    作者:boozallen    | 项目源码 | 文件源码
def find_elements_by_xpath(self, xpath):
        """Finds elements within the element by xpath.

        :Args:
            - xpath - xpath locator string.

        Note: The base path will be relative to this element's location.

        This will select all links under this element.

        ::

            myelement.find_elements_by_xpath(".//a")

        However, this will select all links in the page itself.

        ::

            myelement.find_elements_by_xpath("//a")

        """
        return self.find_elements(by=By.XPATH, value=xpath)
项目:devsecops-example-helloworld    作者:boozallen    | 项目源码 | 文件源码
def deselect_by_visible_text(self, text):
        """Deselect all options that display text matching the argument. That is, when given "Bar" this
           would deselect an option like:

           <option value="foo">Bar</option>

           :Args:
            - text - The visible text to match against
        """
        if not self.is_multiple:
            raise NotImplementedError("You may only deselect options of a multi-select")
        matched = False
        xpath = ".//option[normalize-space(.) = %s]" % self._escapeString(text)
        opts = self._el.find_elements(By.XPATH, xpath)
        for opt in opts:
            self._unsetSelected(opt)
            matched = True
        if not matched:
            raise NoSuchElementException("Could not locate element with visible text: %s" % text)
项目:core-python    作者:yidao620c    | 项目源码 | 文件源码
def click_page():
    driver = webdriver.Firefox()
    driver.get('http://yidao620c.github.io/archives/')
    driver.maximize_window()
    len1 = len(driver.find_elements_by_xpath(
                '//div[@class="post-archive"]/ul[@class="listing"]/li/a'))
    _log.info('????????...')
    for k in range(1, 100):
        logging.info('?{}???...'.format(k))
        for i in range(0, len1):
            l_xpath = '(//div[@class="post-archive"]/ul[@class="listing"]/li/a)[{}]'.format(i + 1)
            ele = WebDriverWait(driver, 2).until(
                EC.presence_of_element_located((By.XPATH, l_xpath))
            )
            ele.click()
            driver.back()

    _log.info('all finished.')
    driver.close()
项目:core-python    作者:yidao620c    | 项目源码 | 文件源码
def _click_page(total_posts, pool_size, group_index):
    _log.info('?{}?: starting...'.format(group_index + 1))
    if group_index > 0 and total_posts < pool_size * group_index:
        return
    # ????????
    _driver = webdriver.PhantomJS()
    _driver.get('https://www.xncoding.com/archives/')

    global TRY_COUNT
    for k in range(1, TRY_COUNT + 1):
        # _log.info('?{}?: ?{}???...'.format(group_index + 1, k))
        for i in range(pool_size * group_index, min(pool_size * (group_index + 1), total_posts)):
            l_xpath = '(//article/header/h1[@class="post-title"]/a[@class="post-title-link"])[{}]'.format(i + 1)
            ele = WebDriverWait(_driver, 2).until(
                EC.presence_of_element_located((By.XPATH, l_xpath))
            )
            ele.click()
            WebDriverWait(_driver, 5).until(
                EC.presence_of_element_located((By.XPATH, '//div[@class="post-body"]'))
            )
            _driver.back()

    _log.info('?{}?: finished.'.format(group_index + 1))
    _driver.close()
项目:core-python    作者:yidao620c    | 项目源码 | 文件源码
def just_click():
    # ????????
    _driver = webdriver.PhantomJS()
    _driver.get('https://www.xncoding.com/archives/')
    # driver.maximize_window()
    posts_count = len(_driver.find_elements_by_xpath(
        '//article/header/h1[@class="post-title"]/a[@class="post-title-link"]'))
    for cc in range(1, posts_count + 1):
        l_xpath = '(//article/header/h1[@class="post-title"]/a[@class="post-title-link"])[{}]'.format(cc)
        ele = WebDriverWait(_driver, 10).until(
            EC.element_to_be_clickable((By.XPATH, l_xpath))
        )
        _log.info('???{}???'.format(cc))
        ele.click()
        WebDriverWait(_driver, 10).until(
            EC.presence_of_element_located((By.XPATH, '//div[@class="post-body"]'))
        )
        _driver.back()
项目:flasky    作者:RoseOu    | 项目源码 | 文件源码
def find_element_by_xpath(self, xpath):
        """Finds element by xpath.

        :Args:
            xpath - xpath of element to locate.  "//input[@class='myelement']"

        Note: The base path will be relative to this element's location.

        This will select the first link under this element.

        ::

            myelement.find_elements_by_xpath(".//a")

        However, this will select the first link on the page.

        ::

            myelement.find_elements_by_xpath("//a")

        """
        return self.find_element(by=By.XPATH, value=xpath)
项目:flasky    作者:RoseOu    | 项目源码 | 文件源码
def find_elements_by_xpath(self, xpath):
        """Finds elements within the element by xpath.

        :Args:
            - xpath - xpath locator string.

        Note: The base path will be relative to this element's location.

        This will select all links under this element.

        ::

            myelement.find_elements_by_xpath(".//a")

        However, this will select all links in the page itself.

        ::

            myelement.find_elements_by_xpath("//a")

        """
        return self.find_elements(by=By.XPATH, value=xpath)
项目:dispatch-console-tests    作者:jdanekrh    | 项目源码 | 文件源码
def expand_tree(self, node_count):
        """expand_tree expands treeview (dynatree) by clicking expander arrows one by one"""
        self.wait_for_frameworks()
        WebDriverWait(self.selenium, 10).until(EC.element_to_be_clickable(self.expander_locator))
        WebDriverWait(self.selenium, 10).until(lambda _: len(self.expanders) == node_count)

        # least-work way to fight ElementNotVisibleException: Message: Cannot click on element, and
        # http://stackoverflow.com/questions/37781539/selenium-stale-element-reference-element-is-not-attached-to-the-page-document/38683022
        def loop():
            self.wait_for_frameworks()
            for expander in self.expanders:  # type: WebElement
                node = self.retry_on_exception(NoSuchElementException, lambda: expander.find_element(By.XPATH, './..'))
                if self.is_expanded(node):
                    continue
                self.wait_for_frameworks()
                expander.click()
                self.wait_for_frameworks()
        self.retry_on_exception(StaleElementReferenceException, loop)

        self.assert_tree_expanded()
项目:PSpiderDemos    作者:xianhu    | 项目源码 | 文件源码
def url_fetch(self, url, keys, critical, fetch_repeat):
        try:
            logging.warning("-------------------------------")
            if keys[0] == "detail":
                logging.warning("fetch %s", url)
                x_str = "//*[@id='detail'][contains(@isloaded, '1')]"
                self.driver.get(url)
                element_present = EC.presence_of_element_located((By.XPATH, x_str))
                WebDriverWait(self.driver, 60).until(element_present)
        except:
            logging.warning("Unexpected error: %s", sys.exc_info()[0])
            #self.clear_session()
            return 0, ""
        response = self.driver.page_source
        if not response:
            logging.warning("not response %s", response)
            return 0, ""
        logging.warning("fetch done!")
        return 1, response
项目:spider-lianjia    作者:longxiaofei    | 项目源码 | 文件源码
def get_total_page(browser, url):
    browser.get(url)
    try:
        time.sleep(4)
        total_room = browser.find_element_by_xpath('/html/body/div[4]/div[1]/div[2]/h2/span').text
        if not total_room:
            return None
        if int(total_room) <= 30:
            return 1
        total = WebDriverWait(browser, 30).until(
                EC.presence_of_element_located((By.XPATH, "/html/body/div[4]/div[1]/div[7]/div[2]/div/a[last()]"))
            )
        if not total.text.isdigit():
            total_page = browser.find_element_by_xpath('/html/body/div[4]/div[1]/div[7]/div[2]/div/a[last()-1]').text
        else:
            total_page = total.text
        return total_page
    except TimeoutException as e:
        print('????????25??????')
        time.sleep(25)
        return get_total_page(url)
项目:webtesting    作者:madlenkk    | 项目源码 | 文件源码
def step_03_check_basket_is_empty(selenium):
    # //*[@id="messages"]/div[2]/p
    # pytest.set_trace()
    # el = selenium.find_element_by_id('messages')
    # import time
    # time.sleep(1)
    # assert 'Your basket is now empty' in el.text

    WebDriverWait(selenium, 2).until(
        EC.text_to_be_present_in_element(
            # (By.ID, 'messages'),
            (By.XPATH, '//p[contains(text(),"Your basket is now empty")]'),
            'Your basket is now empty'
         )
    )

    # empty_alert = selenium.find_element(By.XPATH,'//p[contains(text(),"Your basket is now empty")]')
项目:TestRewrite    作者:osqa-interns    | 项目源码 | 文件源码
def setUp(self):
        """Pretest settings."""
        self.ps = PastaSauce()
        self.desired_capabilities['name'] = self.id()
        if not LOCAL_RUN:
            self.teacher = Teacher(
                use_env_vars=True,
                pasta_user=self.ps,
                capabilities=self.desired_capabilities
            )
        else:
            self.teacher = Teacher(
                use_env_vars=True
            )
        self.teacher.login()
        # go to student scores
        self.teacher.select_course(appearance='college_physics')
        self.teacher.driver.find_element(
            By.LINK_TEXT, 'Student Scores').click()
        self.teacher.wait.until(
            expect.visibility_of_element_located(
                (By.XPATH, '//span[contains(text(), "Student Scores")]')
            )
        ).click()
项目:TestRewrite    作者:osqa-interns    | 项目源码 | 文件源码
def setUp(self):
        """Pretest settings."""
        self.ps = PastaSauce()
        self.desired_capabilities['name'] = self.id()
        if not LOCAL_RUN:
            self.student = Student(
                use_env_vars=True,
                pasta_user=self.ps,
                capabilities=self.desired_capabilities
            )
        else:
            self.student = Student(
                use_env_vars=True
            )
        self.student.login()
        self.student.select_course(title='College Physics with Courseware')
        self.wait = WebDriverWait(self.student.driver, Assignment.WAIT_TIME)
        self.wait.until(
            expect.visibility_of_element_located((
                By.XPATH,
                '//button[contains(@class,"practice")]'
            ))
        ).click()
        self.wait = WebDriverWait(self.student.driver, Assignment.WAIT_TIME)
        self.student.login()
项目:TestRewrite    作者:osqa-interns    | 项目源码 | 文件源码
def delete_assignment(target_element, is_published):
    """
    target_element: the web element of assignment to be deleted
    """
    target_element.click()
    sleep(1)
    if is_published:
        teacher.find(
            By.ID, "edit-assignment-button"
        ).click()
        sleep(1)
    delete_button = teacher.wait.until(
        expect.element_to_be_clickable(
            (By.XPATH, '//button[contains(@class,"delete-link")]')
        )
    )
    teacher.scroll_to(delete_button)
    sleep(1)
    delete_button.click()
    teacher.find(
        By.XPATH, '//button[contains(text(), "Yes")]'
    ).click()
    sleep(1)
项目:TestRewrite    作者:osqa-interns    | 项目源码 | 文件源码
def find_draft(assignment_type, is_all):
    """
    assignment_type: can be "reading", "homework", "external" or "event"
    is_all: boolean value
            True when you want to find all assignment of assignment_type
    """
    if is_all:
        draft = teacher.find_all(
            By.XPATH,
            '//div[@data-assignment-type="' + assignment_type + '"'
            ' and not(contains(@class, "is-published")) and not(@draggable="true")]'
        )
    else:
        draft = teacher.find(
            By.XPATH,
            '//div[@data-assignment-type="' + assignment_type + '"'
            ' and not(contains(@class, "is-published")) and not(@draggable="true")]'
        )
    return draft
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def find_element_by_xpath(self, xpath):
        """Finds element by xpath.

        :Args:
            xpath - xpath of element to locate.  "//input[@class='myelement']"

        Note: The base path will be relative to this element's location.

        This will select the first link under this element.

        ::

            myelement.find_elements_by_xpath(".//a")

        However, this will select the first link on the page.

        ::

            myelement.find_elements_by_xpath("//a")

        """
        return self.find_element(by=By.XPATH, value=xpath)
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def find_elements_by_xpath(self, xpath):
        """Finds elements within the element by xpath.

        :Args:
            - xpath - xpath locator string.

        Note: The base path will be relative to this element's location.

        This will select all links under this element.

        ::

            myelement.find_elements_by_xpath(".//a")

        However, this will select all links in the page itself.

        ::

            myelement.find_elements_by_xpath("//a")

        """
        return self.find_elements(by=By.XPATH, value=xpath)
项目:leetcode    作者:thomasyimgit    | 项目源码 | 文件源码
def deselect_by_visible_text(self, text):
        """Deselect all options that display text matching the argument. That is, when given "Bar" this
           would deselect an option like:

           <option value="foo">Bar</option>

           :Args:
            - text - The visible text to match against
        """
        if not self.is_multiple:
            raise NotImplementedError("You may only deselect options of a multi-select")
        matched = False
        xpath = ".//option[normalize-space(.) = %s]" % self._escapeString(text)
        opts = self._el.find_elements(By.XPATH, xpath)
        for opt in opts:
            self._unsetSelected(opt)
            matched = True
        if not matched:
            raise NoSuchElementException("Could not locate element with visible text: %s" % text)
项目:myautotest    作者:auuppp    | 项目源码 | 文件源码
def operation(self,vmname,btnlocator,statelocator,text,user):
        #?????
        #name?????????????
        #btnlocator????????????????????xpath
        #statelocator???xpath
        #text????????????????
        if 'stop' in btnlocator:
            Cloud_DebugLog.stepinfo(Messages.VM_STOP)
        elif 'restart' in btnlocator:
            Cloud_DebugLog.stepinfo(Messages.VM_RESTART)
        else:
            Cloud_DebugLog.stepinfo(Messages.VM_START)
        userid=utils_misc.readconfig("DepManage").get(user, 'userid')
        password=utils_misc.readconfig("DepManage").get(user, 'password')
        #userid=utils_misc.readconfig("DepManage").get('USER', 'userid')
        #password=utils_misc.readconfig("DepManage").get('USER', 'password')
        #self.normal_cloud_login(userid,password)
        self._search(vmname)
        Cloud_server_map=self.Cloud_server_map
        Cloud_server_map.getelement(btnlocator).click()
        Cloud_server_map.getelement(Cloud_server_map.submit_btn).click()
        WebDriverWait(self.Cloud_client_browser,100).until(expected_conditions.text_to_be_present_in_element((By.XPATH,statelocator), text))
        Cloud_DebugLog.stepinfo(Messages.VM_operation)
项目:myautotest    作者:auuppp    | 项目源码 | 文件源码
def change_vm_size(self,vmname,cpu_size,memory_size,powervm_cpu_units='',flavor_options=''):
        Cloud_DebugLog.stepinfo(Messages.VM_RESIZE)
        self._search(vmname)
        Cloud_server_map=self.Cloud_server_map
        Cloud_server_map.getelement(name=Cloud_server_map.change_vm_size).click()

        #Cloud_server_map.get_select(flavor_options,id=Cloud_server_map.flavor_options_id)
        Cloud_server_map.getelement(name=Cloud_server_map.cpu_size).clear()
        Cloud_server_map.getelement(name=Cloud_server_map.cpu_size).send_keys(cpu_size)
        # Cloud_server_map.getelement(name=Cloud_server_map.cpu_units).clear()
        # Cloud_server_map.getelement(name=Cloud_server_map.cpu_units).send_keys(cpu_units)
        Cloud_server_map.getelement(name=Cloud_server_map.memory_size).clear()
        Cloud_server_map.getelement(name=Cloud_server_map.memory_size).send_keys(memory_size)
        Cloud_server_map.getelement(id=Cloud_server_map.change_size_button_id).click()

        WebDriverWait(self.Cloud_server_map,100).until_not(lambda x: x.getelement(name=Cloud_server_map.memory_size).is_displayed())
        self._search(vmname)
        #Cloud_server_map.getelement(name=Cloud_server_map.change_vm_size).click()
        #memory=(Cloud_server_map.getelement('//*[@id="product-page"]/div[3]/table/tbody/tr/td[7]').text).split('/')[1]
        WebDriverWait(self.Cloud_client_browser,200).until(expected_conditions.text_to_be_present_in_element((By.XPATH,Cloud_server_map.cpu_size_xpath), cpu_size))
        WebDriverWait(self.Cloud_client_browser,200).until(expected_conditions.text_to_be_present_in_element((By.XPATH,Cloud_server_map.memory_size_xpath), memory_size+'GB'))
        WebDriverWait(self.Cloud_client_browser,200).until(expected_conditions.text_to_be_present_in_element((By.XPATH,Cloud_server_map.state_pass), '??'))
        Cloud_DebugLog.stepinfo(Messages.VM_RESIZE_VERIFY)
项目:myautotest    作者:auuppp    | 项目源码 | 文件源码
def operation(self,vmname,btnlocator,statelocator,text,user):
        #?????
        #name?????????????
        #btnlocator????????????????????xpath
        #statelocator???xpath
        #text????????????????
        if 'stop' in btnlocator:
            Cloud_DebugLog.stepinfo(Messages.VM_STOP)
        elif 'restart' in btnlocator:
            Cloud_DebugLog.stepinfo(Messages.VM_RESTART)
        else:
            Cloud_DebugLog.stepinfo(Messages.VM_START)
        userid=utils_misc.readconfig("DepManage").get(user, 'userid')
        password=utils_misc.readconfig("DepManage").get(user, 'password')
        #userid=utils_misc.readconfig("DepManage").get('USER', 'userid')
        #password=utils_misc.readconfig("DepManage").get('USER', 'password')
        #self.normal_cloud_login(userid,password)
        self._search(vmname)
        Cloud_server_map=self.Cloud_server_map
        Cloud_server_map.getelement(btnlocator).click()
        Cloud_server_map.getelement(Cloud_server_map.submit_btn).click()
        WebDriverWait(self.Cloud_client_browser,100).until(expected_conditions.text_to_be_present_in_element((By.XPATH,statelocator), text))
        Cloud_DebugLog.stepinfo(Messages.VM_operation)
项目:myautotest    作者:auuppp    | 项目源码 | 文件源码
def change_vm_size(self,vmname,cpu_size,memory_size,powervm_cpu_units='',flavor_options=''):
        Cloud_DebugLog.stepinfo(Messages.VM_RESIZE)
        self._search(vmname)
        Cloud_server_map=self.Cloud_server_map
        Cloud_server_map.getelement(name=Cloud_server_map.change_vm_size).click()

        #Cloud_server_map.get_select(flavor_options,id=Cloud_server_map.flavor_options_id)
        Cloud_server_map.getelement(name=Cloud_server_map.cpu_size).clear()
        Cloud_server_map.getelement(name=Cloud_server_map.cpu_size).send_keys(cpu_size)
        # Cloud_server_map.getelement(name=Cloud_server_map.cpu_units).clear()
        # Cloud_server_map.getelement(name=Cloud_server_map.cpu_units).send_keys(cpu_units)
        Cloud_server_map.getelement(name=Cloud_server_map.memory_size).clear()
        Cloud_server_map.getelement(name=Cloud_server_map.memory_size).send_keys(memory_size)
        Cloud_server_map.getelement(id=Cloud_server_map.change_size_button_id).click()

        WebDriverWait(self.Cloud_server_map,100).until_not(lambda x: x.getelement(name=Cloud_server_map.memory_size).is_displayed())
        self._search(vmname)
        #Cloud_server_map.getelement(name=Cloud_server_map.change_vm_size).click()
        #memory=(Cloud_server_map.getelement('//*[@id="product-page"]/div[3]/table/tbody/tr/td[7]').text).split('/')[1]
        WebDriverWait(self.Cloud_client_browser,200).until(expected_conditions.text_to_be_present_in_element((By.XPATH,Cloud_server_map.cpu_size_xpath), cpu_size))
        WebDriverWait(self.Cloud_client_browser,200).until(expected_conditions.text_to_be_present_in_element((By.XPATH,Cloud_server_map.memory_size_xpath), memory_size+'GB'))
        WebDriverWait(self.Cloud_client_browser,200).until(expected_conditions.text_to_be_present_in_element((By.XPATH,Cloud_server_map.state_pass), '??'))
        Cloud_DebugLog.stepinfo(Messages.VM_RESIZE_VERIFY)
项目:myautotest    作者:auuppp    | 项目源码 | 文件源码
def menu_image(self):
        Cloud_DebugLog.stepinfo(Messages.IMAGE_LIST)
        Cloud_DebugLog.debug_print(Messages.IMAGE_LIST)
        menuname = 'image'
        Cloud_client_browser = self.driver
        #Cloud_image_map = Image_UIMap(Cloud_client_browser)
        Cloud_browser_main_map = Main_Browser_UIMap(Cloud_client_browser)
        #image_map=image_UIMap(Cloud_client_browser)
        #Left_Menu().menu_workorder(self.driver, menuname)
        Cloud_browser_main_map.get_menu('image').click()
        locator = (By.XPATH,"//a[@href='/image/']")
        #flag=WebDriverWait(self.driver,5).until(EC.visibility_of_element_located(locator))
        try:
            WebDriverWait(self.driver,5).until(EC.visibility_of_element_located(locator))
        except:
            print '??????????????????'
            Cloud_browser_main_map.get_menu('image').click()
        Cloud_browser_main_map.get_menu('image/').click()
项目:myautotest    作者:auuppp    | 项目源码 | 文件源码
def menu_image(self):
        Cloud_DebugLog.stepinfo(Messages.IMAGE_LIST)
        Cloud_DebugLog.debug_print(Messages.IMAGE_LIST)
        menuname = 'image'
        Cloud_client_browser = self.driver
        #Cloud_image_map = Image_UIMap(Cloud_client_browser)
        Cloud_browser_main_map = Main_Browser_UIMap(Cloud_client_browser)
        #image_map=image_UIMap(Cloud_client_browser)
        #Left_Menu().menu_workorder(self.driver, menuname)
        Cloud_browser_main_map.get_menu('image').click()
        locator = (By.XPATH,"//a[@href='/image/']")
        #flag=WebDriverWait(self.driver,5).until(EC.visibility_of_element_located(locator))
        try:
            WebDriverWait(self.driver,5).until(EC.visibility_of_element_located(locator))
        except:
            print '??????????????????'
            Cloud_browser_main_map.get_menu('image').click()
        Cloud_browser_main_map.get_menu('image/').click()
项目:myautotest    作者:auuppp    | 项目源码 | 文件源码
def menu_custom_image(self):
        Cloud_DebugLog.stepinfo(Messages.IMAGE_LIST)
        Cloud_DebugLog.debug_print(Messages.IMAGE_LIST)
        Cloud_client_browser = self.driver
        Cloud_image_map = Image_UIMap(Cloud_client_browser)
        Cloud_browser_main_map = Main_Browser_UIMap(Cloud_client_browser)
        #image_map=image_UIMap(Cloud_client_browser)
        #Left_Menu().menu_workorder(self.driver, menuname)
        Cloud_browser_main_map.get_menu('image').click()
        locator = (By.XPATH,"(//a[@href='/image/'])[2]")
        #flag=WebDriverWait(self.driver,5).until(EC.visibility_of_element_located(locator))
        try:
            WebDriverWait(self.driver,5).until(EC.visibility_of_element_located(locator))
        except:
            print '?????????????????????'
            Cloud_browser_main_map.get_menu('image').click()
        time.sleep(2)
        Cloud_image_map.getelement("(//a[@href='/image/'])[2]").click()
项目:E-commerce-crawlers    作者:Hopetree    | 项目源码 | 文件源码
def get_info(self,id):
        '''???????????????????????????????'''
        dic = {}
        url = 'https://detail.tmall.hk/hk/item.htm?spm=a220o.1000855.1998025129.2.102f616emYvWTL&abtest=_AB-LR32-PR32&pvid=a2be15e3-8200-46b3-bd09-de041b8b8dc3&pos=2&abbucket=_AB-M32_B9&acm=03054.1003.1.2431317&id={}&scm=1007.12144.81309.23864_0&sku_properties=-1:-1'.format(id)
        self.driver.get(url)
        # html = self.driver.page_source
        # print(html)
        try:
            location = self.waiter.until(
                EC.presence_of_element_located((By.XPATH,'//dl[@class="tm-happy11-panel"]/dd/span[@class="tm-price"]'))
            )
            info = location.text.strip()
            dic['id'] = id
            dic['price'] = info if info else '?????'
            self.write_info(dic)
        except TimeoutException as e:
            print(e)
            dic['id'] = id
            dic['price'] = '{}????????'.format(e).strip()
            self.write_info(dic)
项目:nerodia    作者:watir    | 项目源码 | 文件源码
def _given_xpath_or_css(self, selector):
        xpath = selector.pop('xpath', None)
        css = selector.pop('css', None)

        if not (xpath or css):
            return None

        if xpath and css:
            raise ValueError("'xpath' and 'css' cannot be combined ({})".format(selector))

        how, what = [None] * 2
        if xpath:
            how = By.XPATH
            what = xpath
        elif css:
            how = By.CSS_SELECTOR
            what = css

        if selector and not self._can_be_combined_with_xpath_or_css(selector):
            raise ValueError('{} cannot be combined with other selectors {})'.format(how, selector))

        return [how, what]
项目:nerodia    作者:watir    | 项目源码 | 文件源码
def build(self, selectors):
        adjacent = selectors.pop('adjacent', None)
        xpath = self._process_adjacent(adjacent) if adjacent else './/'

        xpath += selectors.pop('tag_name', '*')

        index = selectors.pop('index', None)

        # the remaining entries should be attributes
        if selectors:
            xpath += '[{}]'.format(self.attribute_expression(None, selectors))

        if adjacent and index is not None:
            xpath += "[{}]".format(index + 1)

        logging.debug({'xpath': xpath, 'selectors': selectors})

        return [By.XPATH, xpath]

    # TODO: Get rid of building
项目:nerodia    作者:watir    | 项目源码 | 文件源码
def test_handles_custom_attributes(self, browser, mocker, expect_one, expect_all):
        div1 = element(mocker, values={'tag_name': 'div'}, attrs={'custom_attribute': 'foo'})
        span = element(mocker, values={'tag_name': 'span'}, attrs={'custom_attribute': 'foo'})
        div2 = element(mocker, values={'tag_name': 'div'}, attrs={'custom_attribute': 'foo'})

        expect_one.return_value = span
        expect_all.return_value = [div1, span, div2]

        selector = {'custom_attribute': 'foo', 'tag_name': 'span'}
        result = locate_one(browser, selector)

        expect_one.assert_called_once_with(By.XPATH, ".//span[@custom-attribute='foo']")

        assert result.tag_name == 'span'

    # with special cased selectors
项目:voamos    作者:miguelsc    | 项目源码 | 文件源码
def get_second_column_values(self, elem, flight_dict):
        has_wifi = False
        second_col_elems = elem.find_elements(
            By.XPATH, self.REL_PATHS['SECOND_COL'])
        if len(second_col_elems) > 2:
            has_wifi = True
            second_col_elems.pop(0)

        flight_dict['dep_hours'] = second_col_elems[0].find_element(
            By.XPATH, self.REL_PATHS['DEP_HOURS']).get_attribute('tooltip')
        flight_dict['arr_hours'] = second_col_elems[0].find_element(
            By.XPATH, self.REL_PATHS['ARR_HOURS']).get_attribute('tooltip')
        flight_dict['airline'] = second_col_elems[1].find_element(
            By.XPATH, self.REL_PATHS['AIRLINE']).text
        flight_dict['has_wifi'] = has_wifi

        return flight_dict
项目:WK0601    作者:ArthurWng    | 项目源码 | 文件源码
def finish_new_topic(self):


            free_topic_btn_loc = (By.XPATH, r'/html/body/div[1]/div[2]/dl/dt/span[1]') # '????'????
            encrypt_topic_btn_loc = (By.XPATH, r'/html/body/div[1]/div[2]/dl/dt/span[2]') # '????'????
            charge_topic_btn_loc = (By.XPATH, r'/html/body/div[1]/div[2]/dl/dt/span[3]') # '????'????

            topic_present_page_switch_btn_loc = (By.XPATH, r'/html/body/div[1]/div[2]/dl/dd/div[1]/div[2]/span[1]/span') # '?????'??

            encrypt_input_box_loc = (By.XPATH, r'/html/body/div[1]/div[2]/dl/dd/div[2]/div/input') # ????'?????'??

            charge_input_box_loc = (By.XPATH, r'/html/body/div[1]/div[2]/dl/dd/div[3]/div/span[2]/input') # ????'?????'??

            new_topic_finish_btn_loc = (By.XPATH, r'/html/body/div[1]/div[2]/div/a[2]') # ????'??'????

            new_topic_previous_btn_loc = (By.XPATH, r'/html/body/div[1]/div[2]/div/a[1]') # ????'???'????


            self.loc_element(*free_topic_btn_loc).click() # ??'????'??
            self.loc_element(*topic_present_page_switch_btn_loc).click() # ??'?????'
            self.loc_element(*new_topic_finish_btn_loc).click() # ??'??'??
项目:Funda-Scraper    作者:Weesper1985    | 项目源码 | 文件源码
def enter_search_term(browser, search_term):

    wait = WebDriverWait(browser, 10)

    try:
        search_bar = wait.until(EC.presence_of_element_located(
            (By.XPATH, "//input[@id='autocomplete-input']")))
        button = wait.until(EC.element_to_be_clickable(
            (By.XPATH, "//button[@class='button-primary-alternative']")))
        search_bar.click()
        time.sleep(randint(10, 15))
        search_bar.clear()
        time.sleep(randint(10, 15))
        search_bar.send_keys(search_term)
        time.sleep(randint(10, 15))
        button.click()
        print("search-button has been clicked")
        time.sleep(randint(15, 20))
        return True
    except (TimeoutException, NoSuchElementException) as e:
        print(str(e))
        return False

# Scrape the resulting page and move on to the next page until hitting the predefined lastpage. All results are stored in a csv-file
项目:AnalyticContainer    作者:DataKitchen    | 项目源码 | 文件源码
def _get_link(self, the_link, link_type, link_text):
        try:
            links = self.pydriver.find_elements(By.XPATH, "//%s" % the_link)
        except (NoSuchElementException, StaleElementReferenceException, WebDriverException), e:
            ACLogger.log_and_print_error(
                '_get_link: unable to find type(%s) links in UI, exception=%s' % (link_type, str(e)))
            return False
        clicked_it = False
        for link in links:
            if clicked_it is False and link.text == link_text:
                try:
                    link.click()
                except (NoSuchElementException, StaleElementReferenceException, WebDriverException), e:
                    ACLogger.log_and_print_error(
                        '_get_link: unable to click on type(%s) text(%s) in UI, exception=%s' % (link_type,link_text,str(e)))
                    return False
                finally:
                    clicked_it = True
                    break
        if clicked_it is False:
            ACLogger.log_and_print_error(
                '_get_link: unable to find link %s in UI ' % link_text)
            return False
        time.sleep(2)
        return True
项目:ShuoshuoMonitor    作者:aploium    | 项目源码 | 文件源码
def find_element_by_xpath(self, xpath):
        """Finds element by xpath.

        :Args:
            xpath - xpath of element to locate.  "//input[@class='myelement']"

        Note: The base path will be relative to this element's location.

        This will select the first link under this element.

        ::

            myelement.find_elements_by_xpath(".//a")

        However, this will select the first link on the page.

        ::

            myelement.find_elements_by_xpath("//a")

        """
        return self.find_element(by=By.XPATH, value=xpath)