如何让 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]") 并且效果更好,但仍然...它将跳过该步骤并且不打印任何东西。 当然 `
选择您的付款方式 @Claudaette :检查上面更新的 1 代码,如果您遇到任何问题,请告诉我 错误:raise exception_class(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: 消息:使用给定的搜索参数无法在页面上找到元素还用等待的驱动程序尝试过,仍然失败。我想在这里理解的是:如果我只声明了手机和应用程序包,并且脚本是为 APP 编写的。脚本会在应用程序和移动浏览器页面之间产生差异吗? (这不会让脚本相信我仍在应用框架上而不是浏览器上?)

以上是关于如何让 pycharm 确认从移动应用程序到移动浏览器的重定向已完成?的主要内容,如果未能解决你的问题,请参考以下文章

怎样把pycharm从f盘移动到桌面

怎么让鼠标自动移动

用户登录移动应用程序后如何保存用户的位置

在 PyCharm 中编辑 python 代码时如何“向前移动插入符号”?

unity3d中如何让物体从一个点自动移动到另一个点呢,

如何将多行从一个网格视图移动到另一个 | WPF