如何让 pycharm 确认从移动应用程序到移动浏览器的重定向已完成?
Posted
技术标签:
【中文标题】如何让 pycharm 确认从移动应用程序到移动浏览器的重定向已完成?【英文标题】:How can make pycharm confirm that the redirect from mobile app to the mobile browser was done? 【发布时间】:2021-10-31 22:24:20 【问题描述】:到处搜索,但我找不到答案。
场景: 为 android 应用程序完成的自动化脚本
前置要求: 单击带有移动浏览器重定向的 Android 应用程序中的按钮
我希望脚本检查的内容: 如果通过检查是否显示来自移动浏览器页面的元素(带有文本或链接或 xpath)将用户成功重定向到移动浏览器
脚本是为应用程序编写的,但我找不到正确的代码来检查浏览器页面中的元素
我将在此处发布我的 Android 应用自动化脚本中的一小部分代码:
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
import time
if __name__ == "__main__":
desired_cap =
"platformName": "android",
"deviceName": "emulator-5554",
"appPackage": "com.project.ProjectName",
"appActivity": ".SplashActivity",
"automatorName": "UiAutomator2",
driver = webdriver.Remote ("http://localhost:4723/wd/hub",desired_cap)
#Get more gold button check
element =
driver.find_element_by_xpath("xpath here")
element.click()
print("Step 12. Get more gold button clicked")
pass
#??????Confirmation that Gold store was open IN BROWSER
wait = WebDriverWait(driver, 10)
element = driver.find_elements_by_xpath("//xpath here,*[text()='Choose your payment method']")
#wait.until(EC.visibility_of_any_elements_located((By.CLASS_NAME, "flx-j-c txt-up")))
for i in element:
if 'Choose your payment method' == i.text:
print('Step 13. User not on Me tab - PASS')
else: print('FAIL to redirect the user')
time.sleep(2)
driver.back()
pass
错误: selenium.common.exceptions.TimeoutException:消息:
我试图通过 xpath、class、text 来查找元素,没有 id 可用于此。
【问题讨论】:
【参考方案1】:我认为问题就在这里,
element = driver.find_elements_by_xpath("//xpath here,*[text()='Choose your payment method']")
如果你注意了,那么你在xpath("")
中有类似xpath here
的东西
应该是:-
element = driver.find_elements_by_xpath("//*[text()='Choose your payment method']")
现在您将在此处获得list
。
print(len(element))
像这样打印大小或对列表做任何你想做的事情。这一切都取决于你。
更新 1: 在看到 html 之后,我认为这应该适合你。
Xpath
//section[contains(@class,'gold-payment-methods')]/descendant::strong
在代码中:-
element = driver.find_element_by_xpath("//section[contains(@class,'gold-payment-methods')]/descendant::strong")
element.click()
【讨论】:
您好,谢谢您的回答。现在没有错误,但即使我有迭代,它也会跳过上面提到的步骤。 for i in element: ` if 'Choose your payment method' == i.text: print('Step 13. User not on Me tab - PASS') time.sleep(2) else: print('无法重定向用户')` 我使用了 element = driver.find_elements_by_xpath("/html/body/div/div[1]/section[1]") 并且效果更好,但仍然...它将跳过该步骤并且不打印任何东西。 当然 `以上是关于如何让 pycharm 确认从移动应用程序到移动浏览器的重定向已完成?的主要内容,如果未能解决你的问题,请参考以下文章