写一个闲鱼爬虫,开了Appium和Android雷电模拟器
想要往搜索框内输入文本,但是set_text会报错,无法输入。
报错信息为 “Cannot set the element to '在这里填入文本'. Did you interact with the correct element?”
求帮忙!谢谢!
代码如下:
# 导入webdriver
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 初始化参数
desired_caps = {
"platformName": "Android", # 被测手机是安卓
"platformVersion": "7.1.2", # 手机安卓版本
"deviceName": "emulator-5554", # 设备名,安卓手机可以随意填写
"appPackage": "com.taobao.idlefish", # 启动APP Package名称
"appActivity": "com.taobao.fleamarket.home.activity.MainActivity", # 启动Activity名称
"noReset": True, # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
}
# 连接Appium Server
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
wait = WebDriverWait(driver, 60)
# 选择搜索框
search_entry = wait.until(EC.presence_of_element_located((By.ID, "com.taobao.idlefish:id/search_bar_layout")))
search_entry.click()
# 输入待搜索内容
search_name = wait.until(EC.presence_of_element_located((By.CLASS_NAME, "android.widget.EditText")))
search_name.click()
search_name.set_text("在这里填入文本") # 似乎此处不能使用set_text,待处理
# 进行搜索
search_button = wait.until(EC.presence_of_element_located((By.XPATH, "//*[@text='搜索']")))
search_button.click()
wait.until(EC.presence_of_element_located((By.CLASS_NAME, "android.widget.ScrollView")))
while True:
driver.swipe(500, 1900, 500, 300, 300)
items = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//*[@class='android.widget.ScrollView']/android.view.View")))
for item in items:
print(item)