【问题标题】:Selenium xpath not clicking on Image linkSelenium xpath 没有点击图片链接
【发布时间】:2021-05-02 20:23:54
【问题描述】:
我正在尝试使用 selenium 来选择搜索中的第一个结果。
使用 xpath 方式点击第一张图片,从搜索中找到第一个结果。
代码是
driver.findElement(By.xpath("//*[@id='category-search-wrapper']/div[2]/div/ol/li[1]/article/a")).click();
通过使用网站上的 f12 和 ctrl f 工具,它表明我有正确的 xpath
但是,它没有单击图像。
这是我正在尝试测试的网站是否有帮助。
https://www.dunnesstores.com/search?keywords=lamp
【问题讨论】:
标签:
java
selenium
xpath
css-selectors
webdriverwait
【解决方案1】:
到click(),在搜索的第一个结果上,您需要将WebDriverWait 诱导为elementToBeClickable(),您可以使用以下Locator Strategies 之一:
-
cssSelector:
driver.get("https://www.dunnesstores.com/search?keywords=lamp")
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button#onetrust-accept-btn-handler"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("ol.product-list.product-list-main > li a"))).click();
-
xpath:
driver.get("https://www.dunnesstores.com/search?keywords=lamp")
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@id='onetrust-accept-btn-handler']"))).click();
new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//ol[@class='product-list product-list-main']/li//a"))).click();
-
浏览器快照:
【解决方案2】:
driver = webdriver.Chrome()
driver.get('https://www.dunnesstores.com/search?keywords=lamp')
accept = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR,
"#onetrust-accept-btn-handler")))
accept.click()
driver.find_element_by_css_selector(
'[class="c-product-card__link"]').click()
你必须先点击接受cookies,然后使用class或xpath或css查找元素
【解决方案3】:
试试:
element = driver.findElement(By.xpath("//*[@id='category-search-wrapper']/div[2]/div/ol/li[1]/article/a"))
driver.executeScript("arguments[0].click();", element)
使用此代码,您可以避免隐藏它的元素以及实际屏幕中不可分配的元素(超出滚动范围)。