我正在尝试创建一个为我创建帐户的机器人,但是我无法与需要发送凭据的元素进行交互。
我所知道的是,我试图与之交互的元素是在单击另一个按钮之后在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代码中已经存在2次,只有第二次是可交互的。
该元素在以下<div>
标签内:
<div id="modal_message_wrapper" class="block_scrollable_wrapper scrollbar-light yellow noise inscription">
答案 0 :(得分:1)
您可以构建一个独特的 xpath ,将id
,name
和placeholder
属性组成如下:
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对话框中,因此,您肯定必须以 WebDriverWait ,然后尝试将任何字符序列发送到<input>
元素。