我最近在用chromiumoxide 来写一个程序,控制浏览器行为,其中输入参数部分需要输入中文,但是在运行的时候报错。有谁用过这个库吗,是否有遇到这个问题,如何解决?
use futures::StreamExt;
use chromiumoxide::{Browser, BrowserConfig};
#[async_std::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let (browser, mut handler) =
Browser::launch(BrowserConfig::builder().with_head().build()?).await?;
let handle = async_std::task::spawn(async move {
loop {
let _event = handler.next().await.unwrap();
}
});
// open the website
let page = browser.new_page("https://www.baidu.cn/").await?;
// type into the search field and hit `Enter`,
// this triggers a navigation to the search result page
let search_element = page.find_element(".input-search").await?;
search_element.click().await?;
let search_list_page = search_element.type_str("你好").await?.press_key("Enter").await?;
//select the target from search list.
//let items_list = &search_list_page.find_element(".search__itemlist").await?;
// let html = search_list_page.wait_for_navigation().await?.content().await?;
handle.await;
Ok(())
}
运行结果是:
the input-search element Element { remote_object_id: RemoteObjectId("97975454993441119.3.3"), backend_node_id: BackendNodeId(15), node_id: NodeId(53), tab: PageInner { target_id: TargetId("318EBB5E32D74275CF66A5E3CF68083D"), session_id: SessionId("2F85FC45AAFB80BB157F23D3D662E605"), sender: Sender { closed: false } } }
Error: ChromeMessage("Key not found: 你")
error: process didn't exit successfully:
1
共 2 条评论, 1 页
评论区
写评论嗯嗯,错误信息是这个意思。 为什么非要模拟键盘事件呢? 我觉得直接复制就可以了,也许我应该再研究研究API,看看有没有直接赋值的方法。
--
👇
TinusgragLin: 人工翻译:键盘上没有“你”键。
人工翻译:键盘上没有“你”键。