首页 > 解决方案 > 使用 selenium 和 python 实现网站自动化

问题描述

嗨!我正在使用 selenium 和 python 自动化 aliexpress,用户可以通过语音命令购买产品,并且可以购买任何类型的产品。现在问题是颜色和尺寸的选择,我已经尝试过 x-path,但是对于相同的颜色和尺寸,每个元素都有不同的 x-path,我想要一个至少有四种颜色和四种尺寸的选择器,我已经给出了间隙图像、代码和页面链接。如果有人有解决方案,请提及。提前谢谢

代码 :

#用于选择第三个项目的颜色 2,但每个元素都不同

elif '2' in query:                                 
                try:                                            
                    color_picker2=driver.find_element_by_xpath('//*[@id="root"]/div/div[2]/div/div[2]/div[7]/div/div[1]/ul/li[2]/div')
                    color_picker2.click()
                except:                                        
                    color_picker2=driver.find_element_by_xpath('//*[@id="root"]/div/div[2]/div/div[2]/div[6]/div/div/ul/li[2]/div')
                    color_picker2.click()  

该页面的链接是: https ://www.aliexpress.com/item/1005001621523593.html?spm=a2g0o.productlist.0.0.45157741uKKhLZ&algo_pvid=bd6c858e-759b-4c66-a59b-2b1724286123&algo_exp_id=bd6c858-a-b7594-a-c65-e 2b1724286123-0

所需详细信息的图像(标记)是:为清楚起见附上图像

标签: pythonseleniumwebautomation

解决方案


要选择可以使用 css 选择器的类型,您可以使用此选择器根据您想要选择的内容更改索引;我正在选择图像,但我认为只有 div 类 sku-property-image 就足够了:

第一个模型 CSS 选择器:

ul[class='sku-property-list']  li:nth-child(1) div[class='sku-property-image'] img

如果要选择第二个,只需将 1 更改为 2:

ul[class='sku-property-list']  li:nth-child(2) div[class='sku-property-image'] img

对于 Size 问题有点复杂,因为 size 和 country 具有相同的选择器,因此在这种情况下,您必须获取父元素并硬编码您要查找的子元素,正如您在下面的选择器中看到的 div :nth-child(2) 表示尺寸部分,而不是 li:nth-child(1) 选择哪个尺寸,1=S,2=M,等等……例如:

第一个 SIZE S CSS 选择器:

div[class='sku-wrap'] div:nth-child(2) ul[class='sku-property-list'] li:nth-child(1) div[class='sku-property-text'] span

第二个 SIZE M CSS 选择器:

div[class='sku-wrap'] div:nth-child(2) ul[class='sku-property-list'] li:nth-child(2) div[class='sku-property-text'] span

推荐阅读