有类似的question发布,我对一个非常相似的案例应用了相同的技术。但是该解决方案对我不起作用,我也不知道是什么导致了错误。
这里是每个选择的html source code
:
<label class="control-label pull-right" style="margin-right: 10px; font-weight: 100;">
<small>显示</small>
<select class="input-sm grid-per-pager" name="per-page">
<option value="https://www.mysite-com/admin/order?per_page=10" >10</option>
<option value="https://www.mysite-com/admin/order?per_page=20" selected>20</option>
<option value="https://www.mysite-com/admin/order?per_page=30" >30</option>
<option value="https://www.mysite-com/admin/order?per_page=50" >50</option>
<option value="https://www.mysite-com/admin/order?per_page=100" >100</option>
</select>
<small>条</small>
</label>
由于此处的select
不是本机HTML元素,而是bootstrap
元素,因此我选择使用page.click
。该代码应执行以下操作:1)单击select
元素,并使选项可供选择,以及2)选择每页100个。这是我的代码:
res = await Promise.all([
page.waitForNavigation({waitUntil: 'load', timeout: 60000}),
page.click('select[name="per-page"]'), //<=== causing error
]);
res = await Promise.all([
page.waitForNavigation({waitUntil: 'load', timeout: 60000}),
page.click('select[name="per-page"] > option:nth-child(5)'),
]);
错误是:
Error: No node found for selector: select[name="per-page"]
at assert (C:\d\code\js\wbot\node_modules\puppeteer\lib\helper.js:259:11)
at Frame.click (C:\d\code\js\wbot\node_modules\puppeteer\lib\FrameManager.js:704:5)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:189:7)
尝试了不同的选择器,例如
select.input-sm[name="per-page"]
select.input-sm.grid-per-pager
但是它们都不起作用。选择器对我来说似乎正确,但是找不到元素。还尝试了page.select
,但效果不佳。我在这里想念什么?
答案 0 :(得分:0)
<appSettings>
<add key="MyConnectionSettings" value="Server=127.0.0.1;Port=3306;Database=myDataBase;Uid=root or user;
Pwd=yourpassword" />
string connectionFromConfig = ConfigurationManager.AppSettings["MyConnectionSettings"];
using(MySqlConnection con = new MySqlConnection(connectionFromConfig)){
con.Open();
string sql = "SELECT *from yourtable";
MySqlCommand cmd = new MySqlCommand(sql, con );
MySqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
Console.WriteLine(rdr[0]+" -- "+rdr[1]);
}
rdr.Close();
}
等待元素出现,然后再选择。