Pipeable
Control webviews programmatically with the Pipeable iOS and (soon) Android SDKs
try? await page.goto("https://news.ycombinator.com", waitUntil: .networkidle)
let searchForm = try await page.waitForXPath(
"//form[contains(@action, 'hn.algolia.com')]", visible: true
)
let textAreaEl = try await searchForm?.querySelector("input[type='text']")
try await textAreaEl!.type("web automation", delay: 50)
try await page.submitActiveForm()
try await page.waitForURL { url in url.contains("hn.algolia") }
try await page.waitForSelector(".Story_title", visible: true)
let stories = try await page.querySelectorAll(".Story_title a > span")
var storyTitles: [String] = []
for story in stories {
if let title = try await story.textContent() {
storyTitles.append(title)
}
}
print(storyTitles)
WebView Mastery
Gain unprecedented programmatic control over in-app embedded browsers, also known as webviews.
Cross-Platform SDK
Harness the power of the Pipeable SDK with seamless integration across both iOS and (soon) Android platforms.
Universal Automation
Build automations that leverage the document object model (DOM) and can do anything that a user can do, unrestricted by the absence or limitations of APIs.
Broad Compatibility
Leverage Pipeable's compatibility with Puppeteer and Playwright to utilize the same automation code on both cloud and client platforms.
Seamless Authentication
Empower users to effortlessly sign into websites using their preferred auth methods, such as FaceID or TouchID. The tight integration between webviews and mobile OSes eliminates the need for manual credential entry or explicit sharing.
Client and Cloud
Execute automations entirely on the client for better privacy and security. Or offer users an option to continue the session in the cloud for better convenience and more flexibility.