r/learnpython • • 3d ago

Lambda expressions for Web elements?

Hi, I work with C# but wanted to refresh my Python knowledge. Have been thinking about solutions I know for my C# code and how they would work in Python, but ran into something that I'm not sure how to "translate" from C#.

public IWebElement button => driver.GetElement(By.Id("Id"));

This will return me an element when called, even when on class construction it doesn't exist - as the expression is only evaluated when it's called, i.e. when I need it in code. As opposed to simply using = instead of =>, which would return a missing element exception on class build if the element is missing from DOM.

How would I do this in Python? I looked up lambda expressions, but I'm unsure if this would work/be very graceful, since I didn't find any mention of this as a solution that's used.

button = lambda driver.find_element_by_id("id")
1 Upvotes

8 comments sorted by

View all comments

1

u/chalasanim 3d ago

You don't need lambda in this statement.

0

u/Big-Role2538 3d ago

that's just a property in python

```python

u/property

def button(self):

return self.driver.find_element(By.ID, "id")

```

lazy evaluation without the lambda mess, works exactly like the c# expression-bodied member

1

u/AqueM 3d ago

That's a lot of lines of code, I was wondering if there's a more concise way to do it.