|
1 | 1 | """Add new methods to extend the driver"""
|
| 2 | +from selenium.webdriver.remote.webelement import WebElement |
2 | 3 | from seleniumbase.fixtures import js_utils
|
3 | 4 | from seleniumbase.fixtures import page_actions
|
4 | 5 | from seleniumbase.fixtures import page_utils
|
@@ -41,6 +42,10 @@ def locator(self, selector, by=None):
|
41 | 42 | pass
|
42 | 43 | raise Exception('No such Element: {%s} (by="%s")!' % (selector, by))
|
43 | 44 |
|
| 45 | + def get_attribute(self, selector, attribute, by="css selector"): |
| 46 | + element = self.locator(selector, by=by) |
| 47 | + return element.get_attribute(attribute) |
| 48 | + |
44 | 49 | def get_page_source(self):
|
45 | 50 | return self.driver.page_source
|
46 | 51 |
|
@@ -158,6 +163,13 @@ def highlight_click(self, *args, **kwargs):
|
158 | 163 | kwargs.pop("loops")
|
159 | 164 | page_actions.click(self.driver, *args, **kwargs)
|
160 | 165 |
|
| 166 | + def switch_to_frame(self, frame): |
| 167 | + if isinstance(frame, WebElement): |
| 168 | + self.driver.switch_to.frame(frame) |
| 169 | + else: |
| 170 | + iframe = self.locator(frame) |
| 171 | + self.driver.switch_to.frame(iframe) |
| 172 | + |
161 | 173 | def set_wire_proxy(self, string):
|
162 | 174 | """Set a proxy server for selenium-wire mode ("--wire")
|
163 | 175 | Examples: (ONLY avilable if using selenium-wire mode!)
|
|
0 commit comments