Selenium- 与 chrome debug 模式的完美结合

在构建浏览器自动化项目时,可以通过chrome debug 模式链接chrome 浏览器,可以完成独立动作的测试和构建,不再需每次从头开始测试。

使用:

启动浏览器

 
  1. chrome.exe --remote-debugging-port=9222 --user-data-dir=D:\a --disable-extensions

selenium 链接到浏览器

 
  1. chrome_options.add_experimental_option(
    "debuggerAddress", f"127.0.0.1:{port}"
    )
    driver = webdriver.Chrome(options=chrome_options)

提示:
测试过程中会生成大量 chromedriver 进程不被关闭,记得及时清理(上百次测试也不占啥资源)

总结:
1、selenium 可以封装大量的等待函数,例如等待元素出现和元素可交互等。但是selenium 任然非常不稳定。可以考虑其他自动化库或者基于selenium 的封装库
2、可以封装基于xpath 的文本查找

class TextMatch:
    def __init__(self, text: Union[str, Self, Iterable[Union[str, Self]]], contains: bool = False,
                 tag: Optional[str] = "*"):
        self.contains = contains
        self.tag = tag
        if isinstance(text, TextMatch):
            self.text = text.text
            self.contains = text.contains
            self.tag = tag
        else:
            self.text = text
    def __str__(self):
        if isinstance(self.text, str):
            express = f"//{self.tag}[contains(text(), '{self.text}')]" if self.contains else f"//{self.tag}[text()='{self.text}']"
            return express
        elif isinstance(self.text, Iterable):
            values = []
            for item in self.text:
                if isinstance(item, str):
                    contains = self.contains
                    text = item
                else:
                    contains = item.contains
                    text = item.text
                    self.tag = item.tag
                value = f"contains(text(), '{text}')" if contains else f"text()='{text}'"
                values.append(value)
            express = "//{}[{}]".format(
                self.tag, " or ".join(values)
            )
            return express
        print(self.text)
    def selenium_locator(self) -> Tuple[str, str]:
        return By.XPATH, str(self)

3、元素查找过程中可以通过共同父级元素进行定位。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值