我正在尝试使用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,但这也无效。
我想知道是否有办法解决这个问题。任何帮助表示赞赏,并提前感谢您。
答案 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();