Skip to content

Using Capture Screenshot with %d in filename#504

Merged
just-be-dev merged 1 commit into
robotframework:masterfrom
aaltat:screen_shot_with_prosent_index
Sep 15, 2015
Merged

Using Capture Screenshot with %d in filename#504
just-be-dev merged 1 commit into
robotframework:masterfrom
aaltat:screen_shot_with_prosent_index

Conversation

@aaltat

@aaltat aaltat commented Sep 3, 2015

Copy link
Copy Markdown
Contributor

This commit enhances the Capture Screenshot keyword to support
internal running counter also when filename is not None. The place
of the counter is indicated with %d character.

Also the absolute path of the screenshot filename is always returned
by the keyword.

Also made small drive by refactoring to follow pep8 better.

@just-be-dev

Copy link
Copy Markdown
Contributor

👍

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would an exception be raised because of there being an extra % in the name?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is because of Python older string formatting, which the code uses, see in here: https://github.com/robotframework/Selenium2Library/pull/504/files#diff-5346a546c6b37e3c016ad51e7155887dR122. Example this: python -c "'foo % bar %d' % 'string'" will also cause exception. There is bug in documentation, that exception is not always TypeError and it would be best to say only exception.

The Python 2.6 onward supports str.format(), which could solve the problem in different way but because we must support Python 2.5, I did not use it. I could also do simple str.replace() in the code, but I would like to keep some formatting options open for future enhancements.

@pekkaklarck

Copy link
Copy Markdown
Member

I initially proposed %d as a placeholder for the index. It's an interesting idea to possible support also other formatting options, but after thinking a bit I don't think that would be very useful. Such formatting would work well if there would be other automatically generated information, but I doubt the would be. Formatting wouldn't be too useful in hypothetical cases like

Capture Page Screenshot    foo-{bar}-{index}.png    bar=zap
Capture Page Screenshot    foo-{bar}-{index}.png    bar=${var}

because you could just use

Capture Page Screenshot    foo-zap-{index}.png
Capture Page Screenshot    foo-${var}-{index}.png

Because I think other formatting isn't likely very useful, I don't think we need to take that into account. That means we could easily use something more explicit than %d to specify an index is needed. We could, for example, allow <index> or :index: and just use .replace('<index>', index) in the code.

@pekkaklarck

Copy link
Copy Markdown
Member

Also, @aaltat mentioned that str.format cannot be used because Python 2.5 needs to be supported. I think Selenium has dropped 2.5 support years ago so that shouldn't be an issue. Is Python 2.5 support promised somewhere?

@aaltat

aaltat commented Sep 6, 2015

Copy link
Copy Markdown
Contributor Author

It is not promised directly. But we do claim to support quite old versions of Robot Framework (2.6 is the minimum version) and older versions do support Python 2.5. How realistic this is, ido not know.

But if we announced that we only support 2.6 onwards, it would allow to use str.format. I still keep the formatting option open because it would be really nice to get example 00001, 00002... and not 1, 2... Or perhaps adding epoch would be nice too.

@pekkaklarck

Copy link
Copy Markdown
Member

As I already wrote, Selenium itself hasn't supported Py2.5 for years. Do you think someone would be using new S2L and downgrade Se separately to an ancient version?

Supporting formatting like leading zeros is a very good point. Supporting {index} and using .format() sounds like a good idea.

@aaltat

aaltat commented Sep 6, 2015

Copy link
Copy Markdown
Contributor Author

Ah my mistake, in INSTALL.rst we say that 2.6 is the minimum version. Because of the trouble caused by %d, I will change the implementation so direction which was suggested by @pekkaklarck. The str.format feels also quite temping to use, because it opens quite nice formatting possibilities. Perhaps it would be best to do something like this: python -c "print 'file-name-{index}.png'.format(index=1)"

@aaltat

aaltat commented Sep 6, 2015

Copy link
Copy Markdown
Contributor Author

Refactored the pull request to use str.format

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This note should be more explicit about what's new in 1.8. I would also either move it at the end of the doc or embed it into the doc like Starting from version 1.8, if ....

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Went for Starting from version 1.8, if ...

@aaltat

aaltat commented Sep 7, 2015

Copy link
Copy Markdown
Contributor Author

@pekkaklarck Thanks for good review.

@just-be-dev

Copy link
Copy Markdown
Contributor

I just read through it and everything looks good to me. You've got my 👍 to merge whenever you feel this is ready.

@aaltat

aaltat commented Sep 8, 2015

Copy link
Copy Markdown
Contributor Author

If @pekkaklarck is also happy, then I am also ready for merge

@aaltat

aaltat commented Sep 8, 2015

Copy link
Copy Markdown
Contributor Author

Squashed all to commits to one, because the middle commits where not meaningful alone.

@aaltat

aaltat commented Sep 8, 2015

Copy link
Copy Markdown
Contributor Author

Hmm some other test did fail, can I somehow push Travis to rerun the tests?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are these changes here to avoid lines longer than 80 chars? That is OK in general, but such changes should be submitted separately. Preferably so that the whole module is gone through in one go. In minor cases it's also a bit questionable is the slightly enhanced PEP-8 compatibility worth an extra change in the version history.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mostly agree with what @pekkaklarck said. We really should keep changes focused. With that being said, I'm not necessarily against this staying. I'll defer to you two on that decision.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, modifications where done do void too long lines. I can can remove it from the commit if it's needed.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to remove. Unrelated changes just add noise that makes the review a bit harder. Now we all already know why the changes are here and removing them wouldn't win much.

@pekkaklarck

Copy link
Copy Markdown
Member

I added few more line notes. Please take a look at them @aaltat and fix ones that you see worth fixing. Would you @zephraph like take a final look at this afterwards and merge?

@just-be-dev

Copy link
Copy Markdown
Contributor

Sure thing.

@aaltat

aaltat commented Sep 11, 2015

Copy link
Copy Markdown
Contributor Author

I did fix it based on the comments from @pekkaklarck. @zephraph could you do review also.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a typo here. Plus it's worded a little weird. Maybe it should be something like

Capturing a page screenshot with two indexes should not cause an error

Or something, idk. Regardless, it could definitely be reworded.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

True, wording is not correct and your example is better. But should I remove the hole test and what you mean: worked weird?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to name

@just-be-dev

Copy link
Copy Markdown
Contributor

@aaltat, have you ran this locally to make sure that the screenshots really do show up?

@aaltat

aaltat commented Sep 13, 2015

Copy link
Copy Markdown
Contributor Author

I did manualy verify that screen captures are visible in the log.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo. whith -> with.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@just-be-dev

Copy link
Copy Markdown
Contributor

Found two more small typos. Otherwise, it looks good to me. Fix those and I'll merge it in.

Thanks for your patience!

This commit enhances the Capture Screenshot keyword to support
internal running counter also when filename is not None. The place
of the counter is indicated with {index} characters.

Also the absolute path of the screenshot filename is always returned
by the keyword.
@aaltat

aaltat commented Sep 14, 2015

Copy link
Copy Markdown
Contributor Author

Fixed based on @zephraph comments.

I think, this is normal iterative development process. I did have an idea, or actually problem to solve. Made a first attempt to fix it and honesty it was quite horrible attempt. Then there was new idea from the review process, which was better, but caused lot of problems/corner cases. And on last attempt, we did nail it down quite well.

Also I am used to review process, it is nice way to share the information between people. It also yields to better results (and this is fine example of one), like better functionality, cleaner code and so one.

@pekkaklarck

Copy link
Copy Markdown
Member

Agreed.

@just-be-dev

Copy link
Copy Markdown
Contributor

👍

just-be-dev added a commit that referenced this pull request Sep 15, 2015
Use Capture Screenshot with {index} in filename.
@just-be-dev just-be-dev merged commit 5030a95 into robotframework:master Sep 15, 2015
@aaltat aaltat deleted the screen_shot_with_prosent_index branch August 8, 2016 15:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants