< 返回版块

Owen 发表于 2024-04-17 10:59

Tags:chromiumoxide, Chinese, Error

我最近在用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:

评论区

写评论
作者 Owen 2024-04-17 17:40

嗯嗯,错误信息是这个意思。 为什么非要模拟键盘事件呢? 我觉得直接复制就可以了,也许我应该再研究研究API,看看有没有直接赋值的方法。

--
👇
TinusgragLin: 人工翻译:键盘上没有“你”键。

TinusgragLin 2024-04-17 14:28

人工翻译:键盘上没有“你”键。

1 共 2 条评论, 1 页