【问题标题】:How to click on an element generated by javascript using selenium如何单击由 javascript 使用 selenium 生成的元素
【发布时间】:2018-07-09 12:49:40
【问题描述】:

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

我所知道的是,我尝试与之交互的元素是在单击另一个按钮后在 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: element is not visible

HTML 元素代码如下所示:

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

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


更新(来自 cmets)

此元素在以下&lt;div&gt; 标签内:

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

【问题讨论】:

标签: javascript node.js selenium selenium-webdriver webdriverwait


【解决方案1】:

您可以构造一个独特的 xpath 组合idnameplaceholder 属性,如下所示:

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')

注意:很明显该元素在 Modal Dialog Box 中,因此您必须以 WebDriverWait 的形式诱导服务员> 在您尝试将任何字符序列发送到 &lt;input&gt; 元素之前。

【讨论】:

  • 是的,但问题是这两个元素完全相同:/
  • @Zayonx 所以很明显,我们无法使用您提供的 HTML 找到解决方案。您必须向我们提供 HTML,通过它我们可以区分 2 元素并专注于所需的元素。
  • 两者之间有一点不同:我要点击的那个在里面:&lt;div id="modal_message_wrapper" class="block_scrollable_wrapper scrollbar-light yellow noise inscription"&gt;
  • @Zayonx 查看我的答案更新并告诉我状态
猜你喜欢
  • 2012-12-25
  • 1970-01-01
  • 2012-08-10
  • 2019-10-09
  • 2021-12-09
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 2021-03-31
相关资源
最近更新 更多