javascript - 如何使用selenium点击由javascript生成的元素

标签 javascript node.js selenium selenium-webdriver webdriverwait

我正在尝试创建一个为我创建帐户的机器人,但我无法与需要发送凭据的元素进行交互。

我所知道的是,我尝试与之交互的元素是在单击另一个按钮后在 javascript 中生成的。我找到了多个答案,但所有答案都是 Node.js 之外的其他语言。

我正在尝试发送此元素上的凭据:

<input type="text" name="pseudo" id="pseudo" placeholder="Mon pseudo légendaire" style="margin-bottom: 10px;" maxlength="10">

我尝试使用这个:

driver.findElement(By.xpath('//*[@id="pseudo"]')).sendKeys('CREDITENTIALS')

这会返回此错误:Webdrivererror:元素不可见

HTML 元素代码如下所示:

<input type="text" name="pseudo" id="pseudo" placeholder="Mon pseudo légendaire" style="margin-bottom: 10px;" maxlength="10">

问题不是我必须等到我尝试与之交互的元素显示出来,因为它已经显示了,问题是我想通过 xpath 单击与我的 findElement 匹配的第二个元素,因为我试图点击的内容在 html 代码中存在两次,并且只有第二次是可交互的。

<小时/>

更新(来自评论)

此元素位于以下 <div> 内标签:

<div id="modal_message_wrapper" class="block_scrollable_wrapper scrollbar-light yellow noise inscription">

最佳答案

您可以构建一个独特的xpath,将id组合起来。 , nameplaceholder属性如下:

driver.findElement(By.xpath("//input[@id='pseudo' and @name='pseudo' and @placeholder='Mon pseudo légendaire']")).sendKeys('CREDITENTIALS')
<小时/>

更新

正如您提到的,所需的元素位于:

<div id="modal_message_wrapper" class="block_scrollable_wrapper scrollbar-light yellow noise inscription">

因此您可以使用以下代码行:

driver.findElement(By.xpath("//div[@class='block_scrollable_wrapper scrollbar-light yellow noise inscription' and @id='modal_message_wrapper']//input[@id='pseudo' and @name='pseudo' and @placeholder='Mon pseudo légendaire']")).sendKeys('CREDITENTIALS')

注意:很明显该元素位于模态对话框中,因此您肯定必须以WebDriverWait的形式引入一个服务员> 在尝试将任何字符序列发送到 <input> 之前元素。

关于javascript - 如何使用selenium点击由javascript生成的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51246003/

相关文章:

javascript - 如何使用 jquery 或 javascript 从 html 表中删除文本框而不丢失文本框值

javascript 搜索数组的数组

node.js - 如何在 Mongoose 中更新?

python - 使用 Selenium Python 从表 (td) 读取文本后不打印任何内容

javascript - 单击时将 div 移动到顶部(虚拟桌面)

node.js - res.json() 和 res.end() 之间的性能差异

javascript - Node.js 中的 declare var 是什么?

ruby-on-rails - 每次运行测试时,Rspec 和 Capybara 都会抛出不一致的 Postgresql 错误

javascript - 在 Selenium WebDriver 中执行 '.hover' Javascript

javascript - 跨平台 Javascript XML 树创建,带有命名空间和 xpath?