我是Selenium的新手,与这个人争斗了几个小时。 我有一个HTML页面,其中包含图标和流视图(两个图像),浏览器视图是100%,我想修改它,使其更小, 可以通过更改浏览器缩放,修改CSS属性或单击图像来完成。
我的代码以打开浏览器开始,等待所有元素加载:
File configFile = new File(classLoader.getResource("property.yml".getFile());
ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory());
config = yamlMapper.readValue(configFile, MyPOJO.class);
我尝试通过缩放来实现:
driver = webdriver.Firefox()
driver.get('http://' + user +':'+password+'@'+camera_address)
driver.maximize_window()
driver.implicitly_wait(15) # seconds
没用。 试图通过Selenium来做 - 找到元素并更改CSS:
driver.execute_script("document.body.style.zoom='0.4'")
或找到图片并点击:
myDynamicElement = driver.find_elements_by_id("stream")
或
driver.find_element_by_xpath('//img[@src="../pics/button_downsize_27x27px.gif"]').click()
或
driver.find_elements_by_xpath('//*[@img]').click()
HTML页面如下所示:
driver.find_elements_by_tag_name('img').click()
尝试@title和@alt甚至包含但没有任何作用。
我做错了什么?!?!如何查找并点击此图片(/pics/button_downsize_27x27px.gif)?
答案 0 :(得分:0)
要点击您想要的图像 - 请使用此处提到的参考代码。
new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfAllElementsLocatedBy((By.cssSelector("a"))));
List<WebElement> elem = driver.findElements(By.tagName("a"));
for(WebElement el : elem){
String element = el.getAttribute("src");
if(element.contains("/pics/button_downsize_27x27px.gif")){
el.click();
break;
}
}
在Java中,您可以在Python中实现它。
答案 1 :(得分:0)
谢谢大家,最后,我做了一些解决方法,因为我看到在chrome中有一个小bug并且通过Firefox,我找不到该元素。 所以我在加载所有元素后再次检索URL并修改它,以便触发JavaScript函数:
myElem = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, 'indexMain')))
driver.get(driver.current_url+'&size=8')
谢谢大家的尝试,这个是一个挑战,因为元素没有id / name / class / css,浏览器找不到XPath。