首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:使用包含By.linkText点字符的By.linkText定位错误(Selenium)

TypeError:使用包含By.linkText点字符的By.linkText定位错误(Selenium)
EN

Stack Overflow用户
提问于 2021-02-09 18:50:23
回答 1查看 146关注 0票数 1

我四处看看其他的问题,但我看不出有什么能帮到我的。正如标题所示,我的错误是TypeError: Invalid locator错误。下面是我的代码的一部分(我认为这里发生了问题),这样您就可以看到它的问题所在了:

代码语言:javascript
复制
(async function(){
            let driver = await new Builder().forBrowser('chrome').build();
            try 
            {
                await driver.get(stockLink);
                if (driver.findElement(By.linkText("View at Amazon.co.uk") === true))
                {
                    let amazonLink = await driver.wait(until.elementLocated(By.linkText('View at Amazon.co.uk')), 5000);
                    await amazonLink.click();
                }

            }
            finally
            {
                await driver.quit();
            }
            
        })();        

在这部分代码中使用的所有变量都被分配了一个值。

编辑:

我将解释代码应该做什么,如果它有帮助的话:

代码单击一个链接,这将导致Amazon上的另一个链接。我可以打开第一个链接,但是在程序尝试打开第二个链接之后,我得到了TypeError: Invalid locator错误。

编辑2:

下面是堆栈跟踪:

代码语言:javascript
复制
Trace
    at Client.<anonymous> (C:\Users\user\project\index.js:55:17)
    at Client.emit (node:events:378:20)
    at MessageCreateAction.handle (C:\Users\user\project\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)     
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\user\project\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\user\project\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (C:\Users\user\project\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)    
    at WebSocketShard.onMessage (C:\Users\user\project\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)   
    at WebSocket.onMessage (C:\Users\user\project\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:378:20)
    at Receiver.receiverOnMessage (C:\Users\user\project\node_modules\ws\lib\websocket.js:825:20)
at C:\Users\user\project\index.js:75:25
    at processTicksAndRejections (node:internal/process/task_queues:94:5)

编辑3:这是错误消息:

代码语言:javascript
复制
TypeError: Invalid locator
    at Object.check [as checkedLocator] (C:\Users\user\project\node_modules\selenium-webdriver\lib\by.js:405:9)
    at Driver.findElement (C:\Users\user\project\node_modules\selenium-webdriver\lib\webdriver.js:971:18)
    at C:\Users\user\project\index.js:66:28
    at processTicksAndRejections (node:internal/process/task_queues:94:5)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 19:29:39

.中,定位器策略有不同的解释,主要是表示classnames。因此出现了错误。

解决方案

您可以将分班更改为:

代码语言:javascript
复制
By.linkText('View at Amazon.co.uk')

至:

代码语言:javascript
复制
By.partialLinkText('View at Amazon')

更新

实际上,您的代码行将是:

代码语言:javascript
复制
if (await driver.findElement(By.linkText("View at Amazon.co.uk")) == true))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66125217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档