selenium 在样式属性中包含两个样式的Python Selple-Locate元素

ddrv8njm  于 2022-11-10  发布在  Python
关注(0)|答案(1)|浏览(98)

正在尝试定位页面上的所有元素

<i data-visualcompletion="css-img" class="x1b0d499 xep6ejk" style="background-image: url(&quot;https://static.xx.fbcdn.net/rsrc.php/v3/yd/r/A6Wu9TeIieI.png&quot;); background-position: 0px -1304px; background-size: auto; width: 16px; height: 16px; background-repeat: no-repeat; display: inline-block;"></i>

因为样式中的属性(如background-position: 0px -1304px;;background-image: url(&quot;https://static.xx.fbcdn.net/rsrc.php/v3/yd/r/A6Wu9TeIieI.png)经常更改,所以我不能像这样按样式定位

style ='background-image: url("https://static.xx.fbcdn.net/rsrc.php/v3/yd/r/A6Wu9TeIieI.png"); background-position: 0px -1304px; background-size: auto; width: 16px; height: 16px; background-repeat: no-repeat; display: inline-block;'
driver.find_elements(By.CSS_SELECTOR, f"i[style='{style}']")

我要找的是某种contains,包括and
I.E

driver.find_elements(By.XPATH, f"//*[contains(@style, 
'width: 16px; height: 16px; background-repeat: no-repeat; display: inline-block;')]")

样式包含myOtherStyleHere

这是Facebook Marketplace的三个点按钮

xpszyzbs

xpszyzbs1#

您可以在XPath定位器中使用逻辑and运算符,如下所示:

driver.find_elements(By.XPATH, "//*[contains(@style, 'width: 16px') and(contains(@style, 'height: 16px')) and(contains(@style, 'background-repeat: no-repeat')) and(contains(@style, 'display: inline-block'))]")

以上仅为示例。其思想是:您可以使用几个contains条件,而每个条件都包含一些所需的固定条件。

相关问题