我可以在控制台(F12)的页面上找到该元素(使用css或xpath)。
$$("span.menu-item[data-vars-category-name='Most Popular']")
但是我无法使用硒(pytest)找到相同的元素
driver.find_element_by_css_selector("span[data-vars-category-name='Most Popular']”)
元素代码:
<span tabindex="0" role="button" on="tap:category--1.scrollTo(duration=200),
AMP.setState({selectedCategoryId: -1, showDropdown: false})" data-vars-category-name="Most Popular" class="menu-item item-1 category-selector " data-amp-bind-class="'menu-item item-1 category-selector ' + (
((!selectedCategoryId && -1 == -2) ||
-1 == selectedCategoryId) ? 'selected' : ''
)" i-amphtml-binding="" i-amphtml-key="10">Most Popular</span>
我在做什么错?我可能应该采取额外的步骤来找到页面上的项目。
答案 0 :(得分:0)
您的cssselector起作用。有一个iframe。您可以使用下面的代码切换到框架
driver.switch_to.frame(iframe)
移至iframe后,可以通过以下方法恢复默认内容:
driver.switch_to.default_content()
我尝试了下面的Java代码,并且有效
List<WebElement> frames = driver.findElements(By.tagName("iframe"));
System.out.println("Frame Size: "+ frames.size());
for(WebElement frame:frames){
try {
driver.switchTo().frame(frame);
break;
}catch(NoSuchFrameException e) {
e.printStackTrace();
}
}
driver.findElement(By.cssSelector("span[data-vars-category-name='Most Popular']")).click();