Selenium和Chromedriver - 无法点击元素

时间:2018-06-02 17:27:06

标签: selenium selenium-webdriver

我正在尝试使用selenium和Chromedriver点击网站上的元素。对于其他元素,我可以使用它们的相对Xpath单击。但是,当我尝试复制新元素的xpath时,它会复制Absolute Xpath,这会给我一个错误。

我想要访问的部分是:

let myImages = document.querySelectorAll('.gallery__img');
let modal = document.querySelector('.galleryModal');
let closeBtn = document.querySelector('.closeBtn');
let current = document.querySelector('.current');
let next = document.querySelector('.nextBtn');
let prev = document.querySelector('.prevBtn');

console.log(myImages);


//OPEN MODAL ON IMAGE CLICK
myImages.forEach(img => {
    img.addEventListener('click', (e) => {
        modal.style.display = 'block';
        current.src = e.target.src;
    })
})

//CLOSE MODAL
closeBtn.addEventListener('click', () => {
    modal.style.display = 'none';
})

到目前为止,我尝试使用以下方法点击元素:

<div class="tile transferMarketTile">
  <div class="loadingSpinner"></div>
  <header>
    <h1 class="tileHeader">Search the Transfer Market</h1>
  </header>
  <div class="tileContent"></div>
  <div class="tileDisabled" style="display: none;">
    <div class="textField tileDisabledMessage"></div>
  </div>
</div>

我使用的是我使用Chrome扩展程序找到的相对xpath,但这也无效。

我想知道是否有办法解决这个问题。任何帮助表示赞赏,并提前感谢您。

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式选择网络元素,

您可以先选择Unique Parent Tag,然后直接访问所需的标签

driver.findElement(By.xpath("//div[contains(@class,'transferMarketTile')]/.//h1")).click();

如果页面中的可见文本是唯一的,那么您可以使用     Xpath中的text()选项

 driver.findElement(By.xpath("//*[text()='Search the Transfer Market']")).click();