https://ttsreader.com/legacy/ でプロセスを自動化しようとしています。ただし、サイトを手動で開いた場合と、自動でアクセスした場合では異なるオプションが表示されることに気付きました。具体的には、自動化を使用する場合、以下に示すように限られた数のオプションのみが表示されます。
ただし、手動でサイトを開くと、320 の言語オプションが表示されます。この矛盾に当惑しています。 Edge が使用しているのと同じプロファイルを参照しようとしましたが、前の図に示されているように、依然として 6 つのオプションしか表示されません。対照的に、以下に示すように手動でサイトを開くと、多数のオプションが表示されます。
誰かがこの違いの理由を教えてくれますか?
ありがとうございます。次のコードを試してみましたが、期待どおりに機能しました。おそらく「魔法」は、コードが実行される前に数秒待って、ページ全体、特に音声を読み込む時間を確保することです。私のテストコードは次のとおりです。
const {Builder, Browser, Select, By} = require('selenium-webdriver');
const delay = ms => new Promise(res => setTimeout(res, ms));
(async function helloSelenium() {
let driver = await new Builder().forBrowser(Browser.CHROME).build();
await driver.get('https://ttsreader.com/legacy/');
await delay(5000); // Wait 5 seconds - so that voices can load.
const selectElement = await driver.findElement(By.id('select_language'))
const select = new Select(selectElement)
select.getOptions().then(arr=>{
console.log(arr.length);
})
await select.selectByValue('Sandy (French (France))')
// Do not quit, so we can visually see the selected option exists.
// await driver.quit();
})();
これが私のpackage.jsonです:
{
"name": "ttsreader-test",
"version": "1.0.0",
"scripts": {
"test": "npx mocha src/hello.js --timeout 60000"
},
"author": "Ronen Rabinovici",
"license": "Apache-2.0",
"dependencies": {
"assert": "^2.1.0",
"selenium-webdriver": "^4.18.1"
},
"devDependencies": {
"mocha": "^10.2.0"
}
}