如何查找并单击HTML图像元素

时间:2018-01-01 09:54:01

标签: python python-3.x selenium selenium-webdriver

我是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)?

2 个答案:

答案 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。